Spring i Java EE mają dobre wsparcie dla websockets. Na przykład wiosną można mieć:Websockets i równoważenie obciążenia
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyHandler(), "/myHandler")
.addInterceptors(new HttpSessionHandshakeInterceptor());
}
}
I z MyHandler
klasie można wysyłać i nasłuchiwać wiadomości do HTML5 websocket.
var webSocket =
new WebSocket('ws://localhost:8080/myHandler');
webSocket.onmessage = function(event) {
onMessage(event)
};
Problem polega na uruchomieniu wielu serwerów za modułem równoważenia obciążenia. Klienci serwerze A nie zostaną powiadomieni o imprezach na serwerze B.
Ten problem został rozwiązany wiosną za pomocą Message Broker z protokołem Stomp (http://assets.spring.io/wp/WebSocketBlogPost.html)
Od użyciu przewodnika i „native” html5 WebSockets wyglądem prostsze dla mnie niż sposób Stomp, moje pytania to:
- Czy można użyć brokera komunikatów bez protokołu Stomp?
- Czy są jakieś inne opcje rozwiązania problemu równoważenia obciążenia?