WebSocket 實時通訊與連線生命週期
WebSocket 協定為瀏覽器與伺服器之間提供了全雙工(Full-Duplex)的雙向實時通訊管道。與傳統 HTTP 的「請求-回應」模式不同,WebSocket 在建立連線後,雙方即可隨時傳送數據,無需每次重新建立 TCP 連線。
在 WebSocket 的生命週期中,連線狀態會經歷以下階段:
- 連線中:當您在「WebSocket 測試客戶端」輸入位址並點擊「連接」時,客戶端會開始嘗試與伺服器建立連線,此時介面會顯示「正在連接到
‹address›...」。 - 已連線:一旦握手成功,連線即正式開啟,日誌會記錄「連接到
‹address›。」,此時雙方可自由收發訊息。 - 關閉中:當用戶端或伺服器發起中斷時,連線進入關閉程序。
- 已關閉:連線完全中斷後,日誌會顯示「已關閉,代碼為
‹code›(‹clean›)。原因:‹reason›」。
協定選擇:ws:// 與 wss:// 的安全性差異
WebSocket 包含兩種不同的協定方案:
- ws://:非加密的明文傳輸,使用 TCP 連接,預設連接埠為 80。
- wss://:基於 TLS/SSL 加密的傳輸,預設連接埠為 443。
在現代網路環境中,安全限制非常嚴格。若測試頁面本身部署於 HTTPS 安全網址下,瀏覽器通常會限制僅能連線至 wss:// 伺服器,以防止混合內容(Mixed Content)的安全風險。本工具僅支援這兩種協定,若輸入其他方案,系統將提示「使用 ws:// 或 wss:// 位址。」。
訊息類型與長度限制
WebSocket 協定支援兩種主要的應用層訊息類型:
- 文字(Text):以 UTF-8 編碼的文字字串。本工具允許您每次傳送一則文字訊息,上限為 100,000 字元,超出時會顯示「該訊息異常大。將其保留在 100,000 字元下。」。
- 二進位(Binary):例如 Blob 或 ArrayBuffer 數據。在本工具中,接收到的二進位訊息會被標記為「二進位訊息」,並顯示其大小,例如「位元組」。
為了維持瀏覽器頁面的流暢度與響應能力,訊息日誌設有上限:
- 日誌最多保留 500 條記錄,超出時會移除舊記錄並顯示「
‹count›較舊的日誌條目已被刪除,以保持此頁面的回應能力。」。 - 單條日誌內容若超過 20,000 字元,系統會進行截斷,並顯示「
‹count›此預覽中隱藏了更多角色。」。
關閉狀態碼與原因解析
當 WebSocket 連線關閉時,協定會定義一個 16 位元的整數關閉碼(Close Code)以及一個可選的文字原因(Reason),用以說明中斷原因。
- 關閉碼:例如
1000代表正常關閉,1006代表異常中斷(無法讀取具體原因)。 - 乾淨與否:關閉狀態會標示為「乾淨」或「不乾淨」,這取決於 TCP 關閉握手是否完整執行。
- 原因:若伺服器未提供具體說明,工具會顯示「沒有提供理由」。
瀏覽器環境的技術限制
本工具基於瀏覽器原生 WebSocket API 開發,因此受限於瀏覽器的安全沙箱與架構限制:
- 無法自訂握手標頭:瀏覽器不允許 JavaScript 在建立 WebSocket 連線時自訂 HTTP 標頭(例如自訂
User-Agent或Authorization)。 - 無法繞過憑證錯誤:若
wss://伺服器的 SSL 憑證無效或過期,瀏覽器會直接拒絕連線。 - 無法查看底層訊框:瀏覽器 API 封裝了底層細節,因此無法暴露網路層級的片段,也無法擷取或顯示 Ping 和 Pong 控制訊框。
隱私保護與數據處理原則
本工具完全在您的瀏覽器本地端執行。此頁面不會向 BroBroGo 上傳或儲存任何內容。您輸入的 WebSocket 位址以及傳送的訊息,皆會直接從您的瀏覽器發送至您指定的伺服器,不經過任何第三方中轉伺服器。
由於訊息會直接送往目標伺服器,連線前請務必移除個人識別資料,以及敏感的法律、金融或健康資訊,因為本頁面無法控制對方伺服器的記錄與保留政策。
常見連線失敗原因分析
當您遇到連線失敗並看到「連線失敗。檢查位址、憑證、伺服器可用性和瀏覽器存取規則。」時,通常由以下原因引起:
- 位址格式錯誤:未輸入完整的協定前綴,位址長度上限為 2,048 字元,超出會提示「該地址異常長。將其保留在 2,048 字元下。」。
- 跨來源資源共用(CORS)與 Origin 限制:伺服器拒絕了來自本測試工具網域的連線請求。
- 憑證未受信任:目標伺服器使用自簽憑證,且未在瀏覽器中手動信任。
- 連線逾時:若伺服器未在 10 秒內回應,將觸發「伺服器未在 10 秒內開啟連線。」的提示。
常見問題解答 (FAQ)
我可以在這裡檢查哪些 WebSocket 資料?
您可以查看瀏覽器公開的每個文字或二進位訊息、其方向、時間和大小,以及最終關閉程式碼、原因和乾淨關閉狀態。瀏覽器頁面無法公開網路層級片段或 Ping 和 Pong 控制幀。
為什麼即使位址在其他地方有效,連線也會失敗?
在安全頁面上,瀏覽器可能需要 wss://。伺服器也必須接受瀏覽器連線和頁面來源。該用戶端無法新增自訂握手標頭、繞過憑證錯誤或覆蓋伺服器的存取規則。
我可以使用生產資料或敏感資料進行測試嗎?
盡可能使用合成數據。發送前刪除姓名、帳戶詳細資料、法律記錄、財務資訊和健康資訊。訊息將傳送到您選擇的伺服器,其日誌記錄和保留規則不在本頁面的控制範圍內。
清除日誌會中斷目前的連線嗎?
不會。點擊「清除日誌」只會清除目前畫面上顯示的歷史訊息條目,並不會關閉現有的 WebSocket 連線,也不會重設已發送與已接收的訊息計數器。