記一次websocket的自動斷開連線

MarkAsh發表於2019-03-14

websocket與後臺連線用著用著就自動斷開了:

原因分析:

  • 1.首先再websocket的關閉回撥中新增日誌,觀察輸出日誌
ws.onclose = function (e) {
    console.log('websocket 斷開:' + e.code + ' ' + e.reason + ' ' + e.wasClean)
    console.log(e)
}
複製程式碼

CloseEvent.code:錯誤碼
CloseEvent.reason: 斷開原因
CloseEvent.WasClean: 是否正常斷開

關閉狀態碼錶

狀態碼 名稱 描述
0-999 保留欄位
1000 CLOSE_NORMAL 正常關閉
1001 CLOSE_GOING_AWAY 終端離開,伺服器端錯誤,也有可能是瀏覽器從頁面跳轉離開
1002 CLOSE_PROTOCOL_ERROR 由於協議錯誤而終端連線
……
  • 2.觀察原因得出是1000,正常斷開連線。多次測試發現,原來是因為點選了頁面的下載功能後,webscoket就自動斷開連線。必現
  • 3.檢視下載功能的程式碼,發現是:
<a style='color:#a0b883;text-decoration:underline;cursor:pointer;' 
download= '錯誤日誌.xlsx'
href = 'http://ip:port/group1/M00/03/8C/CsQVW1yI1wqAVLDZAAAruXJmym45.xlsx'>錯誤日誌下載</a>
複製程式碼
  • 4.根據上述a標籤發現,原來是因為a標籤下載導致頁面離開了。

解決辦法:

給a標籤加上target屬性就可以解決。

<a target='_blank' 
 style='color:#a0b883;text-decoration:underline;cursor:pointer;' 
 download= '錯誤日誌.xlsx' 
 href = 'http://ip:port/group1/M00/03/8C/CsQVW1yI1wqAVLDZAAAruXJmym45.xlsx'>錯誤日誌下載</a>
複製程式碼

相關文章