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
保留
. 表示沒有收到預期的狀態碼.
1006
close_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函式。通過查詢視窗標題 或 和類名 來判斷程式是否正在執行。如果找到了,表明程式正在執行,這時可退出程式,達到不重複執行的效果 反之表明程式是第一次執行。這種方法不適用於以下情況,程式的標題是動態變化的 系統中執行...