messagingTemplate.convertAndSendToUser는 @SendToUser와 다르게 헤더정보가 없으므로 직접 입력해주어야 한다.
createHeaders함수는 필요한 헤더를 설정해주며 만약 세션아이디로 특정 유저에게 메세지를 전달 할 때 세션아이디로 전송할 수 있도록 헤더에 설정해준다.
1 2
// sessionId로 전달 시 messagingTemplate.convertAndSendToUser(sessionId, “/queue/message”, new DirectMessage(“test”), createHeaders(sessionId));
createHeaders함수는 SendToMethodReturnValueHandler.java를 참고하였고 해당 클래스에는 더 자세하고 많은 기능들을 알 수 있다.
클라이언트
클라이언트가 브로커를 통해서가 아닌 직접 메세지를 받기 위해서는 구독 시 주소 앞에 /user이 붙어야 한다.
1 2 3 4
// 브로커를 통한 메세지 수신 @SendToUser session.subscribe(“/queue/message”, brokerMessageHandler); // 직접 메세지 수신 convertAndSendToUser session.subscribe(“/user/queue/message”, directMessageHandler);