일주일 동안 채팅 기능을 구현했습니다.
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;
}
'WIL(Weekly I Learned)' 카테고리의 다른 글
WIL 16(2023.9.04~9.10) 최종프 진행중, 프론트 (0) | 2023.09.12 |
---|---|
WIL 15(2023.8.28~9.03) 최종프 진행중, 프론트 (0) | 2023.09.04 |
WIL 13(2023.8.14~8.20) 최종프 시작, 실제 서비스 제작 코드 고민 (0) | 2023.08.20 |
WIL 12(2023.8.7~8.13) 팀프로젝트, 검증과 백엔드 프론트 연결 (0) | 2023.08.14 |
WIL 12(2023.7.31~8.6) QueryDsl, OAuth2 인증 (0) | 2023.08.06 |
댓글