最近在作的项目中用到了websocket,在谷歌浏览器中显示正常,别人在百度浏览器打开,没有数据显示,百度浏览器是ie内核,开始时先想到的是websocket的兼容性,结果证明websokcet是支持ie的。web
WebSocket connection to 'wss://://pusher.rising.com/app/4a530ae5e37bb480c08b?protocol=7&client=js&version=2.2. 0&flash=false' fai failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header
but no response was received
复制代码
直译过来是由于websocket握手时,发了一个不为空的头,Sec-WebSocket-Protocol
,可是没有接受这个头的响应。 因此将问题焦点汇集在了Sec-WebSocket-Protocol
。浏览器
同一个请求谷歌浏览器的请求头是没有Sec-WebSocket-Protocol
这个字段的,而百度浏览器是传了一个undefined。缘由大体明了,由于Sec-WebSocket-Protocol
传值形成的。bash
声明websocket的方法websocket
var Socket = new WebSocket(url, [protocol] );
复制代码
以上代码中的第一个参数 url, 指定链接的 URL。第二个参数 protocol 是可选的,指定了可接受的子协议,是可选的。当咱们给proctocol传递一个为空的变量时,谷歌浏览器会自动过滤掉值为空的请求头,儿百度浏览器会将undefind传递过去。app
很简单,穿第二个参数的时候加一层判断,若是为空,就只传一个参数就能够了。socket