반응형
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(); } }
- 웹소켓을 사용하기 위해 bean 등록
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 |
---|
댓글