AWS Elastic Load Balancing 与WebSocket并用报错
案情描述:
中午过后,同事发现含有WebSocket的页面与后端的连接死掉了,红色的鲜血流满了屏幕,详情看图
Incompatibile SockJS! Main site uses: "1.1.1", the iframe: "1.0.0".
案情分析:
在ELB中,我们使用的是http协议,但是ELB却不支持WebSocket协议(仅支持HTTP, HTTPs, TCP and TCPs.)并且没有任何消息表示ELB支持的HTTP和HTTPS协议可以支持WebSocket。当浏览器端向服务端发送消息的时候,由于ELB拦截掉了请求,又判断出协议不是支持的几种,就残忍的抛弃掉了。
药方:
从根本出发,WebSocket是基于HTTP协议的,而HTTP协议又是基于TCP协议的,恰巧ELB支持TCP协议,那么可以将ELB配置中HTTP协议改为TCP协议即可,如图
参考文章:http://blog.flux7.com/web-apps-websockets-with-aws-elastic-load-balancing
by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(==防止爬虫==):http://blog.liuyingguang.cn