/** * 클라이언트가 웹 소켓 서버에 연결하는데 사용할 웹 소켓 엔드포인트 등록 * withSockJS 를 통해 웹 소켓을 지원하지 않는 브라우저에 대해 웹 소켓을 대체한다. * +)메소드명에 STOMP가 들어가는 경우 통신 프로토콜인 STOMP구현에서 작동된다. */ @Override publicvoidregisterStompEndpoints(StompEndpointRegistry registry){ registry.addEndpoint("/websocket").setAllowedOriginPatterns("*").withSockJS(); }
/** * 한 클라이언트에서 다른 클라이언트로 메시지를 라우팅하는데 사용될 메시지 브로커 */ @Override publicvoidconfigureMessageBroker(MessageBrokerRegistry registry){ // topic으로 시작되는 요청을 구독한 모든 사용자들에게 메시지를 전달한다. registry.enableSimpleBroker("/topic");
// 클라이언트에서 보낸 메세지를 받을 prefix registry.setApplicationDestinationPrefixes("/app"); } }
MessageDTO 생성
메시지 내용을 담아줄 MessageDTO를 생성합니다.
1 2 3 4 5 6 7
@Data publicclassMessageDTO{
private String content;
private String sender; }
MessageController 생성
/app/sendMessage 경로를 통해 전송되면 @MessageMapping과 매핑되어 메서드를 호출합니다. 그리고 @SendTo를 통해 /topic/message를 구독하고 있는 사용자에게 MessageDTO를 JSON 형식으로 전달합니다.
STOMP는 Simple Text Oriented Messaging Protocol의 약자입니다. 클라이언트와 서버가 서로 통신하는 데 있어 메시지의 형식, 유형, 내용 등을 정의해 주는 프로토콜이라고 할 수 있습니다. STOMP를 사용하게 되면 단순한 Binary, Text가 아닌 규격을 갖춘 메시지를 보낼 수 있습니다.