@SendToUser

임기준·2025년 5월 2일
0

@SendToUser는 WebSocket에서 특정 사용자에게만 응답을 보내고 싶을 때 사용합니다.
이건 예를 들어 요청을 보낸 사용자에게만 응답을 보내는 1:1 메시징에서 자주 사용됩니다.

@SendToUser 예제 (요청 보낸 사용자에게만 응답)

@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.";
    }
}

클라이언트 코드 (JavaScript + STOMP)

// 구독 (현재 사용자 전용 큐)
stompClient.subscribe("/user/queue/reply", function(response) {
    console.log("Private reply: " + response.body);
});

// 메시지 발송
stompClient.send("/app/private-message", {}, "Hi Server!");

spring 설정

WebSocketMessageBrokerConfigurer 설정에서 아래 부분이 있어야 합니다.

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.enableSimpleBroker("/topic", "/queue");
    registry.setUserDestinationPrefix("/user");
}

정리

  • 클라이언트가 /app/private-message로 메시지를 보냄 (@MessageMapping 매핑).
  • 서버는 @SendToUser("/queue/reply")로 응답.
  • 클라이언트는 /user/queue/reply로 수신
profile
openerzone

0개의 댓글