Spring và Java EE có hỗ trợ tốt cho websockets. Ví dụ trong mùa xuân, bạn có thể có:Websockets và cân bằng tải
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyHandler(), "/myHandler")
.addInterceptors(new HttpSessionHandshakeInterceptor());
}
}
Và với MyHandler
lớp học mà bạn có thể gửi và lắng nghe các thông điệp sang HTML5 WebSocket.
var webSocket =
new WebSocket('ws://localhost:8080/myHandler');
webSocket.onmessage = function(event) {
onMessage(event)
};
Vấn đề là nếu bạn chạy nhiều máy chủ phía sau bộ cân bằng tải. Các khách hàng của máy chủ A sẽ không được thông báo cho các sự kiện trên máy chủ B.
Vấn đề này được giải quyết trong mùa xuân bằng cách sử dụng môi giới thông điệp với Stomp giao thức (http://assets.spring.io/wp/WebSocketBlogPost.html)
Kể từ khi sử dụng bộ xử lý và "mẹ đẻ" html5 WebSockets vẻ dễ dàng hơn với tôi thì cách Stomp, câu hỏi của tôi là:
- Có thể sử dụng nhà môi giới thư không có giao thức Stomp không?
- Có tùy chọn nào khác để khắc phục sự cố cân bằng tải không?