Skip to content

Commit

Permalink
feat: 채팅 기본 완성
Browse files Browse the repository at this point in the history
  • Loading branch information
airoca committed Jan 24, 2024
1 parent dd8d753 commit ff92662
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 23 deletions.
19 changes: 4 additions & 15 deletions src/main/java/com/example/sign/websocket/Room.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
public class Room {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand All @@ -14,21 +18,6 @@ public class Room {
private String user1;
private String user2;

public void setId(Long id) {
this.id = id;
}
public void setRoomId(String roomId) {
this.roomId = roomId;
}

public void setUser1(String user1) {
this.user1 = user1;
}

public void setUser2(String user2) {
this.user2 = user2;
}

}


3 changes: 3 additions & 0 deletions src/main/java/com/example/sign/websocket/RoomRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface RoomRepository extends JpaRepository<Room, String> {
Optional<Room> findByUser1AndUser2(String user1, String user2);
}


27 changes: 19 additions & 8 deletions src/main/java/com/example/sign/websocket/WebSocketChat.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,26 @@ public class WebSocketChat {
@OnOpen
public void onOpen(Session session, @PathParam("user1") String user1, @PathParam("user2") String user2) {

//write code here
String roomId;

String roomId = RandomStringGenerator.generateRandomString();

Room room = new Room();
room.setRoomId(roomId);
room.setUser1(user1);
room.setUser2(user2);
roomRepository.save(room);
// user1과 user2에 해당하는 Room 엔티티를 찾는다.
Optional<Room> existingRoom = roomRepository.findByUser1AndUser2(user1, user2);
if(!existingRoom.isPresent()){
existingRoom = roomRepository.findByUser1AndUser2(user2, user1);
}
if (existingRoom.isPresent()) {
// 존재하는 경우, roomId를 가져온다.
roomId = existingRoom.get().getRoomId();
logger.info("There was existing roomId: {}", roomId);
} else {
// 존재하지 않는 경우, 새로운 Room을 생성한다.
roomId = RandomStringGenerator.generateRandomString();
Room room = new Room();
room.setRoomId(roomId);
room.setUser1(user1);
room.setUser2(user2);
roomRepository.save(room);
}

sessionRoomMap.put(session, roomId);
roomSessionMap.computeIfAbsent(roomId, k -> new HashSet<>()).add(session);
Expand Down

0 comments on commit ff92662

Please sign in to comment.