2024.07.09 웹 소켓

웹 소켓이란?
웹 소켓은 웹 브라우저(클라이언트)와 웹 서버 사이에 실시간으로 데이터를 주고받을 수 있게 해주는 기술이다.
전화 통화처럼 한 번 연결되면 계속 대화할 수 있는 방식이라고 생각하면 된다.
웹 소켓을 사용하는 이유
- 실시간 업데이트: 채팅, 실시간 알림, 라이브 점수 업데이트 등에 유용.
- 효율성: 서버에 계속 물어보지 않아도 새로운 정보가 있으면 바로 받을 수 있음.
간단한 예시
ex) 채팅방을 만든다고 가정할 때
- 전통적인 방식: 새 메시지가 있는 서버에 계속 물어봐야 한다.
- 웹 소켓 방식: 한 번 연결하면, 새 메시지가 올 때마다 서버가 바로 알려줍니다.
코드 구현
- 스프링에서는 @MessageMapping 같은 어노테이션을 사용해 웹소켓 메시지를 쉽게 처리할 수 있다.
이 코드는 "/chat"으로 오는 메시지를 받아서 처리한 후, "/topic/messages"를 구독하고 있는 모든 클라이언트에게 보낸다.@MessageMapping("/chat") @SendTo("/topic/messages") public ChatMessage handleChat(ChatMessage message) { return new ChatMessage(message.getFrom(), message.getText(), new Date()); }
클라이언트 A,B,C가 있을 때,
클라이언트A -> "/chat"으로 "안녕하세요" 전송
서버: "안녕하세요" 받음 -> 처리 -> "/topic/messages"로 전송
클라이언트 B, C: 서버로부터 메시지 수신



