Я пытаюсь написать веб-приложение с помощью Spring WebSocket. Я следовал инструкциям в этом руководстве: https://spring.io/guides/gs/messaging-stomp-websocket/
На стороне сервера. Мой контроллер сообщений:
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
Thread.sleep(1000); // simulated delay
return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!");
}
Мой WebSocketConfig:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/gs-guide-websocket").withSockJS();
}
}
Клиентская сторона: вот как я подключаюсь:
function connect() {
var socket = new SockJS('/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function (greeting) {
window.alert(JSON.parse(greeting.body).content);
});
});
}
Проблема:
Когда я просматриваю веб-сайт с нескольких устройств, каждое из подключений получает сообщения от всех других подключений.
Как я могу настроить сервер так, чтобы он мог обрабатывать каждое соединение как отдельное соединение. Итак, сервер будет отправлять сообщение на конкретный сеанс?