ToolAct工具行動

WebSocket 線上測試工具

線上 WebSocket 連線測試、訊息發送與接收除錯工具

未連線
發送訊息
0
接收訊息
0
連線時長
00:00
訊息總數
0
訊息記錄

連線後即可發送和接收訊息

Ctrl + Enter 發送

什麼是 WebSocket?

WebSocket 測試工具會連接指定的 WebSocket 位址,協助確認即時通道是否能開啟、送出訊息並接收回應。WebSocket 常用於聊天、即時儀表板、通知、多人互動、行情資料、裝置通訊和其他長連線雙向情境。它適合開發除錯、代理設定排查、TLS 檢查,以及比較 ws:// 與 wss:// 端點行為。但它不是壓測工具,也不是完整協定分析器。驗證、子協定協商、心跳、重連策略、訊息格式、背壓和伺服器限制仍需要在真實客戶端和部署環境中驗證。連線成功只能說明目前條件下某條路徑可用。

使用方式

使用方式

  1. 在 URL 欄位中輸入 WebSocket 伺服器位址(ws:// 或 wss://)
  2. 選填:輸入子協定,多個以逗號分隔
  3. 點選「Connect」以建立 WebSocket 連線
  4. 在輸入欄位中輸入訊息內容
  5. 選擇訊息類型(Text 或 JSON),JSON 類型會自動驗證格式
  6. 點選「Send」或按 Ctrl + Enter 傳送訊息
  7. 在訊息列表中查看已傳送和接收的訊息,點選即可複製

連線提示

  • 從 HTTPS 頁面測試時請使用 wss://;瀏覽器通常會封鎖來自安全來源的不安全 ws:// 連線。
  • 在除錯期間斷線、重新整理或切換端點之前,請先匯出或複製重要的訊息記錄。

使用場景

手動連接 WebSocket 端點輸入 ws:// 或 wss:// URL,可選填以逗號分隔的子協定,然後開啟瀏覽器 WebSocket 連線。只會使用您輸入的 URL 和子協定;瀏覽器會向該端點開啟單一連線,不會聯繫其他目標。狀態列會區分未連線、連線中、已連線和錯誤狀態,並在可用時顯示關閉碼詳情。
發送和檢查文字或 JSON 訊息撰寫文字或 JSON 訊息,在 JSON 模式下發送前會先驗證格式,使用 Ctrl 或 Command 加 Enter 發送。已發送和接收的訊息會標記時間戳、以位元組標示大小、可解析時標記為 JSON,並盡可能以格式化 JSON 顯示,方便與伺服器預期進行逐幀差異比對。
匯出 WebSocket 工作階段記錄訊息記錄最多保留 500 條,追蹤發送和接收計數以及連線時長,並可匯出為 JSON 檔案。個別訊息也可複製用於除錯 API 對話或即時事件串流,或與關閉碼和時長一起附加到工單中。
探測子協定協商在連線前列出以逗號分隔的子協定(如 'graphql-ws,soap,wamp')。交握會在 Sec-WebSocket-Protocol 回應標頭中回傳伺服器選擇的值,這是檢查客戶端和閘道是否達成一致、或代理是否刪除了請求值的最快方式。如果回應中缺少此標頭,伺服器將請求視為普通 WebSocket,您的應用層解析器很可能會在第一條訊息上失敗,因為兩側的幀格式不再匹配。
觀察心跳和閒置逾時保持連線開啟不傳送流量,觀察是否收到未請求的 ping 幀或自動關閉。將閒置間隔與伺服器文件記載的心跳間隔進行比較以確認保活設定是否匹配,並擷取關閉碼以區分正常的 1000 和異常關閉如 1006。實務上,NGINX 的預設 proxy_read_timeout 為 60 秒,許多雲端負載均衡器在 60 到 350 秒左右就會丟棄閒置連線,因此剛超過一分鐘就關閉的連線幾乎都是代理切斷而非伺服器錯誤。區分 1006(異常關閉,未收到關閉幀)、1001(離開)和 1011(伺服器錯誤)能告訴您應該向代理管理員還是應用團隊反映問題。

技術原理

WebSocket 協定的核心是 HTTP 升級。客戶端首先發送常規 HTTP GET 請求,但附帶 Upgrade: websocket 和 Connection: Upgrade 標頭以及隨機生成的 Sec-WebSocket-Key。伺服器驗證這些標頭後,回應 101 Switching Protocols,其中包含 Sec-WebSocket-Accept 值,該值是 Key 與固定 GUID 拼接後的 SHA-1 結果再經 Base64 編碼。101 回應之後,TCP 連線從 HTTP 切換為 WebSocket,後續資料以 WebSocket 幀傳輸。WebSocket 幀標頭至少 2 位元組,包含 FIN 標誌、操作碼(0x1 文字、0x2 二進位、0x8 關閉、0x9 ping、0xA pong)和承載長度。ping/pong 幀用於心跳偵測;瀏覽器 API 不會自動發送,因此應用層必須自行實作。wss:// 等同於 HTTPS+WebSocket,先進行 TLS 交握再進行 WebSocket 升級;ws:// 為明文傳輸,瀏覽器會拒絕 https 頁面上的 ws:// 端點以防禦降級攻擊。單一幀預設上限約為 1MB;較長的訊息會分割為多個幀傳輸。

  • 交握:客戶端發送帶有 Upgrade: websocket 標頭的 HTTP GET,伺服器回傳 101 Switching Protocols 表示升級成功
  • Sec-WebSocket-Key 是瀏覽器隨機生成的 16 位元組 Base64 字串;伺服器拼接固定 GUID 後取 SHA-1,透過 Sec-WebSocket-Accept 驗證
  • 幀格式:每個幀攜帶至少 2 位元組的標頭,包含 FIN、操作碼(文字/二進位/ping/pong/關閉)和承載長度
  • ws:// 為明文,wss:// 為基於 HTTPS 的 WebSocket;瀏覽器拒絕在 https 站點使用 ws:// 以防禦降級攻擊
  • ping/pong 幀用於心跳:RFC 6455 要求每個 ping 都必須回應 pong;瀏覽器不會自動發送心跳,應用必須自行實作
  • 關閉流程:任一方發送帶有狀態碼的 0x8 關閉幀,對方回覆對應的關閉幀,之後 TCP 連線才會實際釋放

範例

連線到公開 Echo 服務

wss://echo.websocket.org — 101 Switching Protocols 交握成功,傳送 "hello" 立即回傳 "hello"

除錯自家 WebSocket 服務

wss://api.example.com/ws — 子協定 graphql-ws,連線成功,訂閱訊息正常接收

重現連線中斷

wss://api.example.com/ws — 伺服器在連線建立 30 秒後主動關閉,關閉碼 1006(異常關閉)

常見問題

這個 WebSocket 測試工具能做什麼?

可以連線到任意 ws:// 或 wss:// 端點,發送與接收訊息,並檢視協定交換內容。在開發 WebSocket API、MQTT-over-WS 代理、即時遊戲伺服器、聊天系統、即時報價推送等情境都很實用。

訊息會經過你們的伺服器嗎?

不會。瀏覽器會直接連線到目標主機,沒有中間人,我們這邊也不會留下紀錄。目標主機看到的就是你的 IP,跟其他客戶端沒兩樣。

為什麼我連不上 localhost 端點?

受混合內容規則限制:當頁面以 HTTPS 提供時,瀏覽器會封鎖 ws://(不安全)連線。請改用 wss:// 連線目標,或讓本工具改以 HTTP 協定執行以便本機測試。詳細的拒絕原因可在瀏覽器主控台中看到。

可以送出二進位資料嗎?

可以。多數版本同時支援文字與二進位訊框。二進位輸入通常採 Base64 或十六進位,頁面會在送出前先解碼。回傳的二進位內容預設以十六進位或 Base64 顯示。

如何加上自訂標頭?

瀏覽器的 WebSocket API 不允許自訂標頭,這是 Web 平台的限制。唯一能設定的是 Sec-WebSocket-Protocol(子協定)。若要做 Bearer token 驗證,可以改用查詢參數,或在第一則訊息中做認證;某些伺服器也會接受 Cookie。

會測試壓縮和擴充功能嗎?

若伺服器有宣告,瀏覽器會自動協商 per-message-deflate;頁面通常會顯示協商後的擴充。自訂擴充無法測試——瀏覽器並未開放這層的控制權限。

為什麼我的連線一直斷掉?

常見原因:伺服器閒置逾時(通常 30-120 秒)、proxy/負載平衡器逾時、網路中斷,或筆電進入睡眠。現代 WebSocket 需要 ping/pong 心跳,請確認伺服器有送 ping,或讓你的客戶端定期發送訊息。