成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

WebSocket斷開(kāi)原因分析,再也不怕為什么又?jǐn)嚅_(kāi)了

ingood / 7915人閱讀

摘要:閱讀原文把錯(cuò)誤打印出來(lái)斷開(kāi)的原因有很多,最好在斷開(kāi)時(shí),將錯(cuò)誤打印出來(lái)。的字段表示了斷開(kāi)的原因。有三個(gè)字段需要注意通過(guò)分析這三個(gè)字段,一般就可以找到斷開(kāi)原因是錯(cuò)誤碼,是整數(shù)類型是斷開(kāi)原因,是字符串表示是否正常斷開(kāi),是布爾值。

閱讀原文:https://wdd.js.org/websocket-...

1. 把錯(cuò)誤打印出來(lái)

WebSocket斷開(kāi)的原因有很多,最好在WebSocket斷開(kāi)時(shí),將錯(cuò)誤打印出來(lái)。

在線demo地址:https://wdd.js.org/websocket-...

ws.onclose = function (e) {
  console.log("websocket 斷開(kāi): " + e.code + " " + e.reason + " " + e.wasClean)
  console.log(e)
}
如果你想自己玩玩WebSocket, 但是你又不想自己部署一個(gè)WebSocket服務(wù)器,你可以使用ws = new WebSocket("wss://echo.websocket.org/"), 你向echo.websocket.org發(fā)送消息,它會(huì)回復(fù)你同樣的消息。
2. 重要信息錯(cuò)誤狀態(tài)碼

WebSocket斷開(kāi)時(shí),會(huì)觸發(fā)CloseEvent, CloseEvent會(huì)在連接關(guān)閉時(shí)發(fā)送給使用 WebSockets 的客戶端. 它在 WebSocket 對(duì)象的 onclose 事件監(jiān)聽(tīng)器中使用。CloseEvent的code字段表示了WebSocket斷開(kāi)的原因??梢詮脑撟侄沃蟹治鰯嚅_(kāi)的原因。

CloseEvent有三個(gè)字段需要注意, 通過(guò)分析這三個(gè)字段,一般就可以找到斷開(kāi)原因

CloseEvent.code: code是錯(cuò)誤碼,是整數(shù)類型

CloseEvent.reason: reason是斷開(kāi)原因,是字符串

CloseEvent.wasClean: wasClean表示是否正常斷開(kāi),是布爾值。一般異常斷開(kāi)時(shí),該值為false

3. 關(guān)閉狀態(tài)碼表

一般來(lái)說(shuō)1006的錯(cuò)誤碼出現(xiàn)的情況比較常見(jiàn),該錯(cuò)誤碼一般出現(xiàn)在斷網(wǎng)時(shí)。

狀態(tài)碼 名稱 描述
0–999 保留段, 未使用.
1000 CLOSE_NORMAL 正常關(guān)閉; 無(wú)論為何目的而創(chuàng)建, 該鏈接都已成功完成任務(wù).
1001 CLOSE_GOING_AWAY 終端離開(kāi), 可能因?yàn)榉?wù)端錯(cuò)誤, 也可能因?yàn)闉g覽器正從打開(kāi)連接的頁(yè)面跳轉(zhuǎn)離開(kāi).
1002 CLOSE_PROTOCOL_ERROR 由于協(xié)議錯(cuò)誤而中斷連接.
1003 CLOSE_UNSUPPORTED 由于接收到不允許的數(shù)據(jù)類型而斷開(kāi)連接 (如僅接收文本數(shù)據(jù)的終端接收到了二進(jìn)制數(shù)據(jù)).
1004 保留. 其意義可能會(huì)在未來(lái)定義.
1005 CLOSE_NO_STATUS 保留. 表示沒(méi)有收到預(yù)期的狀態(tài)碼.
1006 CLOSE_ABNORMAL 保留. 用于期望收到狀態(tài)碼時(shí)連接非正常關(guān)閉 (也就是說(shuō), 沒(méi)有發(fā)送關(guān)閉幀).
1007 Unsupported Data 由于收到了格式不符的數(shù)據(jù)而斷開(kāi)連接 (如文本消息中包含了非 UTF-8 數(shù)據(jù)).
1008 Policy Violation 由于收到不符合約定的數(shù)據(jù)而斷開(kāi)連接. 這是一個(gè)通用狀態(tài)碼, 用于不適合使用 1003 和 1009 狀態(tài)碼的場(chǎng)景.
1009 CLOSE_TOO_LARGE 由于收到過(guò)大的數(shù)據(jù)幀而斷開(kāi)連接.
1010 Missing Extension 客戶端期望服務(wù)器商定一個(gè)或多個(gè)拓展, 但服務(wù)器沒(méi)有處理, 因此客戶端斷開(kāi)連接.
1011 Internal Error 客戶端由于遇到?jīng)]有預(yù)料的情況阻止其完成請(qǐng)求, 因此服務(wù)端斷開(kāi)連接.
1012 Service Restart 服務(wù)器由于重啟而斷開(kāi)連接.
1013 Try Again Later 服務(wù)器由于臨時(shí)原因斷開(kāi)連接, 如服務(wù)器過(guò)載因此斷開(kāi)一部分客戶端連接.
1014 由 WebSocket標(biāo)準(zhǔn)保留以便未來(lái)使用.
1015 TLS Handshake 保留. 表示連接由于無(wú)法完成 TLS 握手而關(guān)閉 (例如無(wú)法驗(yàn)證服務(wù)器證書).
1016–1999 由 WebSocket標(biāo)準(zhǔn)保留以便未來(lái)使用.
2000–2999 由 WebSocket拓展保留使用.
3000–3999 可以由庫(kù)或框架使用.? 不應(yīng)由應(yīng)用使用. 可以在 IANA 注冊(cè), 先到先得.
4000–4999 可以由應(yīng)用使用.
4. 其他注意事項(xiàng)

如果你的服務(wù)所在的域是HTTPS的,那么使用的WebSocket協(xié)議也必須是wss, 而不能是ws

5. 如何在老IE上使用原生WebSocket?

web-socket-js是基于flash的技術(shù),只需要引入兩個(gè)js文件和一個(gè)swf文件,就可以讓瀏覽器用于幾乎原生的WebSocket接口。另外,web-socket-js還是需要在ws服務(wù)端843端口做一個(gè)flash安全策略文件的服務(wù)。

我自己曾經(jīng)基于stompjs和web-socket-js,做WebSocket兼容到IE5, 當(dāng)然了stompjs在低版本的IE上有兼容性問(wèn)題, 而且stompjs已經(jīng)不再維護(hù)了,你可以使用我fork的一個(gè)版本,地址是:https://github.com/wangduandu...

主要是老版本IE在正則表達(dá)式行為方面有點(diǎn)異常。

      // fix ie8, ie9, RegExp not normal problem
      // in chrome the frames length will be 2, but in ie8, ie9, it well be 1
      // by wdd 20180321
      if (frames.length === 1) {
        frames.push("")
      }
6. 參考

CloseEvent

getting the reason why websockets closed with close code 1006

Defined Status Codes

Upgrading HTTP to WebSocket

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94574.html

相關(guān)文章

  • nodejs + websocket (socket.io)

    摘要:協(xié)議做不到服務(wù)器主動(dòng)向客戶端推送信息。這種單向請(qǐng)求的特點(diǎn),注定了如果服務(wù)器有連續(xù)的狀態(tài)變化,客戶端要獲知就非常麻煩。雙向通信,服務(wù)器可以向客戶端主動(dòng)發(fā)送數(shù)據(jù)。數(shù)據(jù)格式比較輕量,性能開(kāi)銷小,通信高效。 為什么需要 WebSocket? 因?yàn)閭€(gè)人對(duì)概念理解不是很深,文字表達(dá)能力不強(qiáng),如果有關(guān)HTTP等方面描述不準(zhǔn)確,歡迎糾正,謝謝大家 初次接觸 WebSocket 的人,都會(huì)問(wèn)同樣的問(wèn)題:...

    awkj 評(píng)論0 收藏0
  • Linux一鍵配置工具ezhttp

    摘要:簡(jiǎn)介是一個(gè)一鍵配置工具,采用腳本語(yǔ)言編寫。支持自動(dòng)配置環(huán)境,以前提供各種其它的配置工具,如自動(dòng)配置配置等。網(wǎng)絡(luò)問(wèn)題斷開(kāi)安裝過(guò)程中由于網(wǎng)絡(luò)原因?qū)е陆K端斷開(kāi),默認(rèn)使用安裝,可以使用命令恢復(fù)終端。 簡(jiǎn)介 ezhttp是一個(gè)Linux一鍵配置工具,采用bash腳本語(yǔ)言編寫。支持自動(dòng)配置LAMP,LNMP,LNAMP環(huán)境,以前提供各種其它的配置工具,如自動(dòng)配置swap,配置iptables等。項(xiàng)...

    netScorpion 評(píng)論0 收藏0
  • Linux一鍵配置工具ezhttp

    摘要:簡(jiǎn)介是一個(gè)一鍵配置工具,采用腳本語(yǔ)言編寫。支持自動(dòng)配置環(huán)境,以前提供各種其它的配置工具,如自動(dòng)配置配置等。網(wǎng)絡(luò)問(wèn)題斷開(kāi)安裝過(guò)程中由于網(wǎng)絡(luò)原因?qū)е陆K端斷開(kāi),默認(rèn)使用安裝,可以使用命令恢復(fù)終端。 簡(jiǎn)介 ezhttp是一個(gè)Linux一鍵配置工具,采用bash腳本語(yǔ)言編寫。支持自動(dòng)配置LAMP,LNMP,LNAMP環(huán)境,以前提供各種其它的配置工具,如自動(dòng)配置swap,配置iptables等。項(xiàng)...

    qiangdada 評(píng)論0 收藏0
  • WebSocket 與 Socket.IO

    摘要:當(dāng)數(shù)據(jù)發(fā)生變化,便將數(shù)據(jù)發(fā)送給。與網(wǎng)絡(luò)應(yīng)用中,兩個(gè)應(yīng)用程序同時(shí)需要向?qū)Ψ桨l(fā)送消息的能力即全雙工通信,所利用到的技術(shù)就是,其能夠提供端對(duì)端的通信。其不僅支持,還支持許多種輪詢機(jī)制以及其他實(shí)時(shí)通信方式,并封裝了通用的接口。 WebSocket 與 Socket.IO 最近小組在做一個(gè)智慧交通的項(xiàng)目,其中有個(gè) 分享屏幕 的功能,即一個(gè) client 能夠?qū)⒆约寒?dāng)前的頁(yè)面分享到另外一個(gè) cli...

    snifes 評(píng)論0 收藏0
  • WebSocket系列之如何建立和維護(hù)可靠的連接

    摘要:與此同時(shí),后端服務(wù)的中也有相關(guān)的長(zhǎng)連接維持時(shí)長(zhǎng)設(shè)置。如何快速的恢復(fù)連接根據(jù)上面的操作方案,我們會(huì)在網(wǎng)絡(luò)異常時(shí)斷開(kāi)連接。 概述 通過(guò)前四篇博客,相信讀者對(duì)于WebSocket的使用和數(shù)據(jù)(不論是ArrayBuffer還是String)傳輸都有了一個(gè)深刻的了解?,F(xiàn)在我們來(lái)介紹下,我在使用WebSocket時(shí),連接相關(guān)模塊遇到的一些共性問(wèn)題,以及我們?nèi)绾谓鉀Q這些問(wèn)題。 本文作為WebSock...

    BetaRabbit 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<