Websocket: как нажать сообщение целевому пользователю

Я пытаюсь реализовать push-уведомление в 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 }));
    }

Мне уже удалось заставить его работать. Но вопрос в том, как я могу нажать сообщение определенным целевым пользователям. Например, существует 5 онлайн-пользователей, а именно: user1, user2, user3, user4 и user5. Я хочу, чтобы уведомление было опубликовано только для пользователей1 и только для пользователя2. Можете ли вы дать мне представление о том, как достичь этого? Я думаю о том, чтобы делать это в бэкэнде или в интерфейсе. Или есть другой способ добиться этого, используя spring.

Кто-нибудь мне поможет.

Спасибо.

Ответ 1

Вы можете проверить Пользовательские адресаты для целевых пользователей с вашими сообщениями, это делается с помощью вызова SimpMessagingTemplate.convertAndSendToUser().

Обратите внимание, что для включения этой функции ваши пользователи должны быть аутентифицированы по протоколу HTTP.