기타/WebSocket

WebSocket + Spring Boot 도입기 : 웹소켓 기초

naksnaks 2024. 1. 4.
반응형
  • build.gradle

    • websocket dependency 추가

        implementation 'org.springframework.boot:spring-boot-starter-websocket'
    • config

      • 웹소켓을 사용하기 위해 bean 등록
        @Component
        public class WebSocketConfig {
          @Bean
          public ServerEndpointExporter serverEndpointExporter() {
              return new ServerEndpointExporter();
          }
        }
    • service

      • WebSocketChatting 서비스 추가

        @ServerEndpoint(value = "/chatt")
        @Service
        public class WebSocketChatting {
        
              // 접속한 Client들 모아놓은 Set
          private static Set<Session> CLIENTS = Collections.synchronizedSet(new HashSet<>());
        
              // session을 연결할 때
          @OnOpen
          public void onOpen(Session session) {
              System.out.println(session.toString());
        
              if(CLIENTS.contains(session)){
                  System.out.println("이미 연결된 세션입니다." + session);
              } else {
                  CLIENTS.add(session);
                  System.out.println("새로운 세션입니다." + session);
              }
          }
        
              // session을 닫을 때
          @OnClose
          public void onClose(Session session) throws Exception {
              CLIENTS.remove(session);
              System.out.println("세션을 닫습니다." + session);
          }
        
              // message를 보냈을 때
          @OnMessage
          public void onMessage(String message, Session session) throws Exception {
              System.out.println("메세지 : " + message);
        
              for(Session client : CLIENTS) {
                  System.out.println("메시지를 전달합니다 : " + message);
                  client.getBasicRemote().sendText(message);
              }
          }
        
        }
    • Front-end는 구현하기 힘드므로 chrome 확장 프로그램 사용. (Websocket King Client)

    • Session 1에서 “hello 1” 입력

      • session1 에서는 보낸 message와 받은 message 둘 다 출력
      • session2에서는 받은 message만 출력
    • session 2에서 disconnect 선택

    - session2에서만 disconnect 메시지 호출

- 앞으로 더 해봐야 할 것
    - 방 여러개를 만들어 여러 장소에서 채팅 가능하게 고도화
반응형

'기타 > WebSocket' 카테고리의 다른 글

WebSocket + Spring Boot 도입기 : 웹소켓 심화  (0) 2024.01.05

댓글

💲 추천 글