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>
複製程式碼