WebSocket 채팅 (1)

보트·2023년 9월 21일
0

채팅

목록 보기
1/7

로컬 설정

프로젝트 환경

  • websocket 의존성 추가
    • build.gradle
      // websocket
      implementation 'org.springframework.boot:spring-boot-starter-websocket'

Websocket Handler

  • socket 통신은 서버와 클라이언트가 1:N → 서버에는 여러 클라이언트가 발송한 메세지를 받아 처리해줄 Handler 필요
  • WebSocketChatHandler.java
    • 클라이언트 메세지 송신

      → console.log 출력
      
      → 클라이언트로 메세지 전송
      @Slf4j(topic = "WebSocketChatHandler")
      @Component
      public class WebSocketChatHandler extends TextWebSocketHandler {
      
          @Override
          protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
              String payload = message.getPayload();
              log.info("채팅 log : payload {}", payload);
              TextMessage textMessage = new TextMessage("입장하셨습니다.");
              session.sendMessage(textMessage);
          }
      }
  • WebSocketConfig.java
    • WebSocket 활성화
      - @EnableWebSocket 선언
      - endpoint 설정(”/ws/chat”)
      - CORS : setAllowedOrigins(”*”)

          → 도메인이 다른 서버에서도 접속 가능
          
      @Slf4j(topic = "WebSocketChatHandler")
      @Component
      public class WebSocketChatHandler extends TextWebSocketHandler {
      
          @Override
          protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
              String payload = message.getPayload();
              log.info("payload {}", payload);
              TextMessage textMessage = new TextMessage("입장하셨습니다.");
              session.sendMessage(textMessage);
          }
      }

테스트

Simple Websocket Client

  • Websocket 테스트를 위한 클라이언트가 없을 때 사용할 수 있는 chrome 확장 프로그램

Simple WebSocket Client

(참고 : https://www.daddyprogrammer.org/post/4077/spring-websocket-chatting/)
(참고 : https://terianp.tistory.com/146)
(참고 : https://gnaseel.tistory.com/11)

profile
일주일에 한 번

0개의 댓글