본문 바로가기
WIL(Weekly I Learned)

WIL 14(2023.8.21~8.27) 최종프 진행중, 채팅 기능 구현

by seed0335 2023. 8. 27.

일주일 동안 채팅 기능을 구현했습니다. 

 

Websocket 개념을 배우고, 실제로 사용해서 구현 중입니다.

    private final ChatRoomService chatRoomService;

    // 사용자 채팅 전달
    // 전달 주소는 chatUrl에 따라 달라짐
    @MessageMapping("/chat.sendMessage/{chatUrl}")
    @SendTo("/topic/public/{chatUrl}")
    public ChatMessage sendMessage(@Payload ChatMessage chatMessage) {
        return chatMessage;
    }


    // 사용자가 접속시, 접속 종료시 정보를 헤더에 저장
    // 사용자 접속시 대화창에 정보 표시
    // 주소는 chatUrl 에 따라 달라짐
    @MessageMapping("/chat.addUser/{chatUrl}")
    @SendTo("/topic/public/{chatUrl}")
    public ChatMessage addUser(
            @Payload ChatMessage chatMessage,
            SimpMessageHeaderAccessor headerAccessor, @DestinationVariable String chatUrl  // 이 부분은 나중에 로그인 사용자로 변환하면 될듯.
    ) {
        // 유저이름을 웹소켓에 추가합니다. 채팅이 끊길 때 사용합니다.
        headerAccessor.getSessionAttributes().put("username", chatMessage.getSender());

        // 채탱 URL을 웹소켓에 추가합니다. 채팅이 끊길 때 사용합니다.
        headerAccessor.getSessionAttributes().put("disconnectUrl", chatUrl);
        return chatMessage;
    }

 

댓글