WebSocket斷開原因

2021-09-29 11:29:52 字數 1746 閱讀 6357

ws.onclose = function (e)
websocket斷開時,會觸發closeevent, closeevent會在連線關閉時傳送給使用 websockets 的客戶端. 它在 websocket 物件的 onclose 事件***中使用。closeevent的code欄位表示了websocket斷開的原因。可以從該字段中分析斷開的原因。

closeevent有三個字段需要注意, 通過分析這三個字段,一般就可找到斷開原因

一般來說1006的錯誤碼出現的情況比較常見,該錯誤碼一般出現在斷網時。

狀態碼名稱

描述0–999

保留段, 未使用.

1000

close_normal

正常關閉; 無論為何目的而建立, 該鏈結都已成功完成任務.

1001

close_going_away

終端離開, 可能因為服務端錯誤, 也可能因為瀏覽器正從開啟連線的頁面跳轉離開.

1002

close_protocol_error

由於協議錯誤而中斷連線.

1003

close_unsupported

由於接收到不允許的資料型別而斷開連線 (如僅接收文字資料的終端接收到了二進位制資料).

1004

保留. 其意義可能會在未來定義.

1005

close_no_status

保留. 表示沒有收到預期的狀態碼.

1006close_abnormal

保留. 用於期望收到狀態碼時連線非正常關閉 (也就是說, 沒有傳送關閉幀).

1007

unsupported data

由於收到了格式不符的資料而斷開連線 (如文字訊息中包含了非 utf-8 資料).

1008

policy violation

由於收到不符合約定的資料而斷開連線. 這是乙個通用狀態碼, 用於不適合使用 1003 和 1009 狀態碼的場景.

1009

close_too_large

由於收到過大的資料幀而斷開連線.

1010

missing extension

客戶端期望伺服器商定乙個或多個拓展, 但伺服器沒有處理, 因此客戶端斷開連線.

1011

internal error

客戶端由於遇到沒有預料的情況阻止其完成請求, 因此服務端斷開連線.

1012

service restart

伺服器由於重啟而斷開連線.

1013

try again later

伺服器由於臨時原因斷開連線, 如伺服器過載因此斷開一部分客戶端連線.

1014

由 websocket標準保留以便未來使用.

1015

tls handshake

保留. 表示連線由於無法完成 tls 握手而關閉 (例如無法驗證伺服器證書).

1016–1999

由 websocket標準保留以便未來使用.

2000–2999

由 websocket拓展保留使用.

3000–3999

可以由庫或框架使用.? 不應由應用使用. 可以在 iana 註冊, 先到先得.

4000–4999

可以由應用使用.

參考:

WebSocket加入心跳包防止自動斷開連線

近日,在公司中開發乙個使用websocket為前端推送訊息的功能時,發現乙個問題 就是每隔一段時間如果不傳送資料的話,與前段的連線就會自動斷開 剛開始以為是session的原因,因為web session 的預設時間是30分鐘 但是通過日誌發現斷開時間間隔時間遠遠不到30分鐘 認真分析發現不操作間隔...

WebSocket加入心跳包防止自動斷開連線

近日,在公司中開發乙個使用websocket為前端推送訊息的功能時,發現乙個問題 就是每隔一段時間如果不傳送資料的話,與前段的連線就會自動斷開 剛開始以為是session的原因,因為web session 的預設時間是30分鐘 但是通過日誌發現斷開時間間隔時間遠遠不到30分鐘 認真分析發現不操作間隔...

程式多開原理記錄

windows系統下,程式防止多開的幾種常見方法 1 使用findwindow api函式。通過查詢視窗標題 或 和類名 來判斷程式是否正在執行。如果找到了,表明程式正在執行,這時可退出程式,達到不重複執行的效果 反之表明程式是第一次執行。這種方法不適用於以下情況,程式的標題是動態變化的 系統中執行...