WebSocket 線上測試工具
線上 WebSocket 連線測試、訊息發送與接收除錯工具
什麼是 WebSocket?
WebSocket 測試工具會連接指定的 WebSocket 位址,協助確認即時通道是否能開啟、送出訊息並接收回應。WebSocket 常用於聊天、即時儀表板、通知、多人互動、行情資料、裝置通訊和其他長連線雙向情境。它適合開發除錯、代理設定排查、TLS 檢查,以及比較 ws:// 與 wss:// 端點行為。但它不是壓測工具,也不是完整協定分析器。驗證、子協定協商、心跳、重連策略、訊息格式、背壓和伺服器限制仍需要在真實客戶端和部署環境中驗證。連線成功只能說明目前條件下某條路徑可用。
使用方式
使用方式
- 在 URL 欄位中輸入 WebSocket 伺服器位址(ws:// 或 wss://)
- 選填:輸入子協定,多個以逗號分隔
- 點選「Connect」以建立 WebSocket 連線
- 在輸入欄位中輸入訊息內容
- 選擇訊息類型(Text 或 JSON),JSON 類型會自動驗證格式
- 點選「Send」或按 Ctrl + Enter 傳送訊息
- 在訊息列表中查看已傳送和接收的訊息,點選即可複製
連線提示
- 從 HTTPS 頁面測試時請使用 wss://;瀏覽器通常會封鎖來自安全來源的不安全 ws:// 連線。
- 在除錯期間斷線、重新整理或切換端點之前,請先匯出或複製重要的訊息記錄。
使用場景
技術原理
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,或讓你的客戶端定期發送訊息。