Есть ли способ использовать WebSockets с клиентом SockJS и сервером Spring 4, но без использования STOMP?
Основываясь на этом руководстве с веб-сайта Spring, я знаю, как настроить приложение на основе WebSocket с помощью Stomp и Spring 4. На стороне клиента у нас есть:
var socket = new SockJS('/hello');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function(greeting){
showGreeting(JSON.parse(greeting.body).content);
});
});
А на стороне сервера у нас в контроллере следующее:
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
Thread.sleep(3000); // simulated delay
return new Greeting("Hello, " + message.getName() + "!");
}
Теперь я понимаю, что @MessageMapping("/hello")
гарантирует, что если сообщение будет отправлено адресату "/hello"
, тогда будет вызван метод greeting()
. И поскольку stompClient
подписан на "/topic/greetings"
, @SendTo("/topic/greetings")
отправит сообщение обратно stompClient
.
Но проблема с вышеизложенным состоит в том, чтоОМОМPClient является объект Stomp. И я хочу просто использовать sock.send('test');
и доставить его к месту назначения моего сервера. И я хочу сделать @SendTo("myownclientdestinationmap")
, я могу получить его по
sock.onmessage = function(e) {
console.log('message', e.data);
};
Итак, как это сделать с помощью Spring 4, SockJS и без Stomp? Или Spring 4 WebSocket поддерживает только Stomp?
spring-mvc
приложении, не могли бы вы подсказать / рассказать мне, почему вы не хотите использоватьSTOMP
?, Спасибо !!! - person Shantaram Tupe   schedule 24.11.2017