日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

记录使用websocket时因为Sec-Websocket-Protocol遇到的一个问题

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记录使用websocket时因为Sec-Websocket-Protocol遇到的一个问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近在做的項目中用到了websocket,在谷歌瀏覽器中顯示正常,別人在百度瀏覽器打開,沒有數據顯示,百度瀏覽器是ie內核,開始時先想到的是websocket的兼容性,結果證實websokcet是支持ie的。

百度瀏覽器的報錯

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傳值造成的。

聲明websocket的方法

var Socket = new WebSocket(url, [protocol] ); 復制代碼

以上代碼中的第一個參數 url, 指定連接的 URL。第二個參數 protocol 是可選的,指定了可接受的子協議,是可選的。當我們給proctocol傳遞一個為空的變量時,谷歌瀏覽器會自動過濾掉值為空的請求頭,兒百度瀏覽器會將undefind傳遞過去。

解決方法

很簡單,穿第二個參數的時候加一層判斷,如果為空,就只傳一個參數就可以了。

轉載于:https://juejin.im/post/5be2b51d51882516df0306ba

總結

以上是生活随笔為你收集整理的记录使用websocket时因为Sec-Websocket-Protocol遇到的一个问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。