@SendToUser는 WebSocket에서 특정 사용자에게만 응답을 보내고 싶을 때 사용합니다.
이건 예를 들어 요청을 보낸 사용자에게만 응답을 보내는 1:1 메시징에서 자주 사용됩니다.
@Controller
public class PrivateMessageController {
@MessageMapping("/private-message")
@SendToUser("/queue/reply")
public String processPrivateMessage(String message, Principal principal) {
System.out.println("From user: " + principal.getName() + " - message: " + message);
return "Hello, " + principal.getName() + "! Your message was received.";
}
}
// 구독 (현재 사용자 전용 큐)
stompClient.subscribe("/user/queue/reply", function(response) {
console.log("Private reply: " + response.body);
});
// 메시지 발송
stompClient.send("/app/private-message", {}, "Hi Server!");
WebSocketMessageBrokerConfigurer 설정에서 아래 부분이 있어야 합니다.
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic", "/queue");
registry.setUserDestinationPrefix("/user");
}