簡體   English   中英

瀏覽器關閉 WebSocket 連接,錯誤 1006 在我在 OpenVPN 后面時建立后一秒

[英]Browser closes WebSocket connection with error 1006 one second after it is established when I'm behind OpenVPN

我有小型 HTTP + WebSocket 服務器托管在 Amazon VPS 上。 Index.html有JS代碼連接WebSocket服務器並與之交換數據。 當我使用公共 IP 或域名直接連接我的服務器時 - 一切正常。

但是我不希望這台服務器公開,所以我將 OpenVPN 配置為私下連接到這台服務器。

Sometimes everything works as expected over OpenVPN and when I enter local (inside VPN) servers IP address in my browser (Chrome or Opera) it succesfully loads index.html, connects my WebSocket server and succesfully exchanges data via WebSocket connection. 但有時(或某些天)在 Websocket 連接建立后 1 秒,它會被瀏覽器關閉,錯誤代碼為 1006,並且沒有任何描述。 我的腳本嘗試在此之后 1 秒重新連接 WebSocket,但結果始終相同。

我不明白為什么有時一切正常,有時我無法在 OpenVPN 上使用 WebSocket 幾個小時。

有人可以描述為什么在 OpenVPN 上使用 WebSocket 時會出現錯誤 1006,以及如何通過編碼或重新配置 Chrome、Opera 或 OpenVPN 來消除它?

我發現只有當 WS 連接的任何一側發送大消息時才會出現該問題。

我猜如果瀏覽器和 WebSocket 服務器之間有一些中間件,如 VPN、防火牆或代理,那么大的 WS 消息可能會超過該中間件的某些內部數據包大小或限制,它會在消息傳輸過程中中斷瀏覽器和服務器之間的連接。 這種意外斷開會導致瀏覽器出現錯誤 1006。

如果您的客戶端遇到錯誤 1006 的意外斷開連接,請嘗試最小化 API 的 WebSocket 消息大小。 如果您需要發送大量數據,請不要將其一大塊發送。 您最好將其切片並發送多條短信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM