복붙노트

[SPRING] Websocket : 대상 사용자에게 메시지를 푸시하는 방법

SPRING

Websocket : 대상 사용자에게 메시지를 푸시하는 방법

웹 소켓과 sock.js를 사용하여 봄에 푸시 알림을 구현하려고합니다.

다음은 코드 스 니펫입니다.

    public class NotifyController {

        @MessageMapping("/notifications")
        @SendTo("/get/notifications")
        public Greeting greeting(HelloMessage message) throws Exception {
            new Greeting("Hello, " + message.getName() + "!");
        }
    }


    public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
        @Override
        public void configureMessageBroker(MessageBrokerRegistry config) {
            config.enableSimpleBroker("/get/notifications");
            config.setApplicationDestinationPrefixes("/gssocket");
        }

        @Override
        public void registerStompEndpoints(StompEndpointRegistry registry) {
            registry.addEndpoint("/notifications").withSockJS();
        }
    }

이것은 앞에있는 코드입니다.

    function connect() {
        var notificationSocket = new SockJS('/notifications');
        stompNotificationClient = Stomp.over(notificationSocket);

        stompNotificationClient.connect({}, function(frame) {
            console.log('Connected: ' + frame);
            stompNotificationClient.subscribe('/get/notifications', function(greeting){
                showGreeting(JSON.parse(greeting.body).content);
            });
        });
    }

    function sendNotification() {
        var name = "test"
        stompNotificationClient.send("/gssocket/notifications", {}, JSON.stringify({ 'name': name }));
    }

나는 이미 그것을 작동하게 만들었습니다. 그러나 질문은 어떻게 특정 대상 사용자에게 메시지를 보낼 수 있는가입니다. 예를 들어 user1, user2, user3, user4 및 user5라는 5 명의 온라인 사용자가 있습니다. 사용자 1과 사용자 2에게만 알림을 게시하고 싶습니다. 이걸 어떻게 성취 할 수 있을지 생각해 주시겠습니까? 내가 백엔드에서 또는 프론트 엔드에서 그렇게 생각 중입니다. 또는 봄을 사용하여이를 달성하는 또 다른 방법이 있습니다.

누군가 제발 도와주세요.

고맙습니다.

해결법

  1. ==============================

    1.사용자 대상을 확인하여 특정 사용자를 메시지로 타겟팅 할 수 있습니다.이 작업은 SimpMessagingTemplate.convertAndSendToUser () 호출을 사용하여 수행됩니다.

    사용자 대상을 확인하여 특정 사용자를 메시지로 타겟팅 할 수 있습니다.이 작업은 SimpMessagingTemplate.convertAndSendToUser () 호출을 사용하여 수행됩니다.

    이 기능을 사용하려면 사용자가 HTTP 인증을 받아야합니다.

  2. from https://stackoverflow.com/questions/24282138/websocket-how-to-push-a-message-to-a-target-user by cc-by-sa and MIT license