Я пытаюсь реализовать 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.
Кто-нибудь мне поможет.
Спасибо.