Có cách nào để sử dụng WebSockets với máy khách SockJS và máy chủ Spring 4 nhưng không sử dụng STOMP không?WebSocket với Sockjs & Spring 4 nhưng không có Stomp
Dựa trên hướng dẫn này từ trang web của Spring, tôi biết làm thế nào để thiết lập một ứng dụng dựa WebSocket sử dụng Stomp và mùa xuân 4. Về phía khách hàng, chúng ta có:
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);
});
});
Và ở phía máy chủ, chúng tôi có sau trong bộ điều khiển:
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
Thread.sleep(3000); // simulated delay
return new Greeting("Hello, " + message.getName() + "!");
}
Bây giờ, tôi hiểu rằng @MessageMapping("/hello")
đảm bảo rằng nếu một thông điệp được gửi đến một điểm đến "/hello"
, sau đó phương pháp greeting()
sẽ được gọi. Và kể từ khi số stompClient
được đăng ký "/topic/greetings"
, @SendTo("/topic/greetings")
sẽ gửi lại thư đến số stompClient
.
Nhưng vấn đề ở trên là stompClient là đối tượng Stomp. Và tôi muốn chỉ đơn giản là sử dụng sock.send('test');
và nó đã được gửi đến đích của máy chủ của tôi. Và tôi muốn làm @SendTo("myownclientdestinationmap")
, tôi có thể nhận được nó bằng cách
sock.onmessage = function(e) {
console.log('message', e.data);
};
Vì vậy, bất kỳ cách nào để làm điều này với Spring 4, SockJS và không Stomp? Hoặc SpringS WebSocket chỉ hỗ trợ Stomp?
Tôi muốn sử dụng WebSocket trong ứng dụng 'spring-mvc' của tôi, bạn có thể vui lòng hướng dẫn/cho tôi biết tại sao bạn không muốn sử dụng' STOMP'?, Cảm ơn bạn !!! –