Spring和Java EE对WebSockets有很好的支持。 例如,在Spring中您可以做到:
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyHandler(), "/myHandler")
.addInterceptors(new HttpSessionHandshakeInterceptor());
}
}
使用 MyHandler
类,您可以发送和侦听 HTML5 WebSocket 消息。
var webSocket =
new WebSocket('ws://localhost:8080/myHandler');
webSocket.onmessage = function(event) {
onMessage(event)
};
问题在于当您在负载平衡器后运行多个服务器时,服务器A的客户端将无法收到服务器B上的事件通知。
在Spring中,可以使用使用Stomp协议的消息代理解决此问题 (http://assets.spring.io/wp/WebSocketBlogPost.html)
由于对我来说,使用处理程序和“本地”html5 WebSockets似乎更容易比使用Stomp方式,我的问题是:
- 是否可以在没有Stomp协议的情况下使用消息代理?
- 有没有其他选项来解决负载平衡问题?