王孝东的个人空间
WebSocket STOMP SockJS
WebSocket
- Stack Overflow上的说明:Nginx与Apache作为WebSocket的load balancer并不能很好支持,如果自己取配置Nginx或者Apache将是一件非常痛苦的事,而HAProxy可以很好的支持。另外我自己测试过使用nginx作为反向代理服务器,没有配置成功
- Stack Overflow对WebSocket+Load Balancer的说明
- HAProxy + WebSocket配置方式
- HAProxy + WebSocket配置方式
STOMP
好的文章:
SockJS
使用RabbitMQ作为broker的WebSocket实现
非常好的文章:How HTML5 Web Sockets Interact With Proxy Servers
STOMP WebSocket无法设置自定义header问题:
由于STOMP WebSocket无法设置自定义的header,因此如果在负载均衡器(如HA)中想要根据某个值做后端路由是不可行的,可以将参数放到url中来实现,下面通过几个截图来查看websocket设置自定义header问题:
我的前端代码中有如下设置header的部分:
var socket = new SockJS('/xxxx-backend?tableId=' + tableId);
stompClient = Stomp.over(socket);
// 指定座位的direction: TODO
stompClient.connect({roomId:roomId,tableId:tableId,userId:userId}, function (frame) {
console.log('Connected: ' + frame);
subscribeTable(tableId,userId);
});
然而,从浏览器中却无法看到这几个header参数:不管是websocket的info端点还是upgrade的websocket都没有: