AWS ELB 使用过程中由于协议认知不足引发的血案(AWS Elastic Load Balancing 与WebSocket并用报错)

案情描述:
中午过后,同事发现含有WebSocket的页面与后端的连接死掉了,红色的鲜血流满了屏幕,详情看图
AWS ELB 使用过程中由于协议认知不足引发的血案(AWS Elastic Load Balancing 与WebSocket并用报错)_第1张图片
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协议即可,如图
AWS ELB 使用过程中由于协议认知不足引发的血案(AWS Elastic Load Balancing 与WebSocket并用报错)_第2张图片
参考文章: http://blog.flux7.com/web-apps-websockets-with-aws-elastic-load-balancing

你可能感兴趣的:(exceptions,云主机)