工作时使用了Websocket技术,在使用的过程中发现,浏览器(Chrome)升级后可能会导致Websocket不可用,更换浏览器后可以正常使用。
近日偶尔一次在本地调试,发现使用相同版本的Chrome浏览器,不可连接线上服务器的WS服务,但是可以连接本地的WS服务。 此时初步怀疑是服务器在某种特殊情况下会触发无法连接的问题。
使用Wireshark抓包
Filter: ip.dst==serverIP or (ip.dst==本地IP and ip.src==serverIP)
一.查看可以正常连接线上服务的浏览器的网络请求(搜狗高速核)
可以看到WebSocket连接建立的步骤:
1、先建立TCP连接,1~3条为tcp连接的三次握手
2、发出一个http请求,Header内容如下
GET /write?agentId=255 HTTP/1.1 Upgrade: websocket Connection: Upgrade Host: 10.134.71.235:2015 Origin: Pragma: no-cache Cache-Control: no-cache Sec-WebSocket-Key: NddL4PEqgeUKIon0p+IHwQ== Sec-WebSocket-Version: 13 Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, x-webkit-deflate-frame User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0 Cookie: ASP.NET_SessionId=kdparak1ecjplo4erozul2yl; _un=zouchengzhuo@sogou-inc.com; id=77.NRe6bXSRddXY6INl1HMkRAdn7L4yIt4wcTGYu43q9r4; un=zouchengzhuo@sogou-inc.com; pw=70467311a7ed8f62b58f8f1d65cdb408