websocket中发生数据丢失_获取使用关闭代码1006关闭websocket的原因
關(guān)閉代碼1006是一種特殊的代碼,它表示瀏覽器實(shí)現(xiàn)異常(本地)關(guān)閉了連接。
如果您的瀏覽器客戶端報(bào)告關(guān)閉代碼1006,那么您應(yīng)該在websocket.onerror(evt)事件中查看詳細(xì)信息。
但是,Chrome很少會(huì)向JavaScript端報(bào)告任何接近代碼1006的原因。這可能是由于WebSocket規(guī)范中的客戶端安全規(guī)則所致,以防止濫用websocket。(例如使用它掃描目標(biāo)服務(wù)器上的開放端口,或?yàn)榫芙^服務(wù)攻擊生成大量連接)。
請(qǐng)注意,1006如果HTTP升級(jí)到Websocket時(shí)發(fā)生錯(cuò)誤,Chrome通常會(huì)報(bào)告關(guān)閉代碼(這是在技術(shù)上“連接” websocket之前的步驟)。由于諸如身份驗(yàn)證或授權(quán)不正確或協(xié)議使用不當(dāng)(例如請(qǐng)求子協(xié)議,但服務(wù)器本身不支持該子協(xié)議)之類的原因,甚至是試圖與非Websocket的服務(wù)器位置進(jìn)行通信的原因(例如嘗試連接到ws://images.google.com/)
從根本上講,如果您看到關(guān)閉代碼1006,則websocket本身存在一個(gè)非常低級(jí)的錯(cuò)誤(類似于“無法打開文件”或“套接字錯(cuò)誤”),并不是真正的用戶,因?yàn)樗赋隽艘粋€(gè)低級(jí)問題與您的代碼和實(shí)現(xiàn)。解決低級(jí)問題,然后在連接時(shí)可以包含更合理的錯(cuò)誤代碼。您可以根據(jù)項(xiàng)目的范圍或嚴(yán)重性來完成此操作。示例:信息和警告級(jí)別是項(xiàng)目特定協(xié)議的一部分,并且不會(huì)導(dǎo)致連接終止。使用嚴(yán)重或致命消息進(jìn)行報(bào)告時(shí),還可以使用項(xiàng)目的協(xié)議來傳達(dá)所需的詳細(xì)信息,然后使用websocket關(guān)閉流程的有限功能關(guān)閉連接。
請(qǐng)注意,WebSocket關(guān)閉代碼的定義非常嚴(yán)格,并且關(guān)閉原因短語/消息的長(zhǎng)度不能超過123個(gè)字符(這是有意的websocket限制)。
但是,如果您只是出于調(diào)試原因而希望獲得此信息,那么并不是全部丟失,因?yàn)殛P(guān)閉的詳細(xì)信息及其根本原因經(jīng)常在Chrome的javascript控制臺(tái)中報(bào)告,并且包含相當(dāng)詳細(xì)的信息。
總結(jié)
以上是生活随笔為你收集整理的websocket中发生数据丢失_获取使用关闭代码1006关闭websocket的原因的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php获取ajax数组,从AJAX获取P
- 下一篇: python win10 连接hive_