У меня есть приложение на основе JWT, защищенное пружинной безопасностью.Все защищено и работает нормально.Кроме того, приложение предоставляет URL-адрес веб-сокета (localhost: 8080 / ws), на который пользователи могут подписаться («/ realtime») и получать общие обновления, т.е. каждый пользователь, прошедший проверку подлинности или не прошедший проверку подлинности, получит обновления.
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/realtime");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws")
.setAllowedOrigins("*")
.withSockJS();
}
}
Код клиента:
//private _channel = "/realtime";
constructor(){
this.connect();
}
public connect() : void {
let self = this;
var token = localStorage.getItem("token");//get jwt from storage
self._webSocketUrl = "http://localhost:8080/ws";
//let webSocket = new WebSocket(this._webSocketUrl);//without sockjs
let webSocket = new SockJS(this._webSocketUrl);//with sockjs
self._stompClient = Stomp.over(webSocket);
self._stompClient.connect({}, function (frame) {
self._stompClient.subscribe("/realtime", function (stompResponse) {
console.log("got data from server");
self._stompSubject.next(stompResponse);
});
});
}
Все это работает нормально.Теперь мне нужно отправлять уведомления конкретному аутентифицированному пользователю всякий раз, когда на сервере происходит что-то его интересующее.Поэтому я никогда не получаю сообщений от пользователей.Всякий раз, когда аутентифицированному пользователю необходимо отправить запрос, он может сделать это через конечные точки отдыха, а не через веб-сокет.Итак, после того, как он вошел в систему, подключился к конечной точке / ws и подписался на "/ назначение в реальном времени, он завершил. Теперь моя работа - отправлять им уведомления всякий раз, когда они доступны для конкретного пользователя. Это своего рода одностороннийклиент) связь через websocket. Это изменится в будущем.
Итак, всякий раз, когда у меня есть что-то для аутентифицированного пользователя, скажем, user123@gmail.com, как я могу отправить ему уведомление через websocket?
Я просмотрел много ссылок и вопросов по stackoverflow, но не смог найти ничего, что работает.