Agentic Research

WebSocket(雙向長連線)

又稱:雙向長連線 · 串流 · streaming · SSE · 即時連線

一條建好就一直開著、兩邊都能隨時丟資料的連線;不像 HTTP 那樣問一次、答一次就斷。

你會在什麼時候遇到它

你在 ChatGPT 看到答案一個字一個字冒出來,那就是串流。理解它,你才知道為什麼有些工具能即時顯示、有些卻要等全部算完才一次跳出來 —— 差在用的是長連線還是一次性回應。

打個比方

HTTP 像發簡訊:發一條、等一條回,每條都要重新撥號。WebSocket 像打通了電話不掛斷:兩邊想說就說,即時來回,適合要持續更新的場景。

最小範例

輪詢(polling):用戶端每隔 1 秒問一次「有新資料嗎」→ 多半得到「沒有」,浪費
WebSocket:連線一直開著,伺服器一有新 token 就主動推給用戶端,雙向
SSE:伺服器單向持續推送(建立在 HTTP 上),LLM 的串流輸出多半用這個

關鍵分別:LLM 逐字輸出這種「伺服器不斷推、用戶端只需接」的場景,業界主流其實是 SSE(Server-Sent Events),不是 WebSocket。SSE 更簡單、走一般 HTTP 就夠;WebSocket 是雙向,適合聊天室、協作編輯這類兩邊都要即時送的東西。兩者都屬於「長連線串流」,與一次性 HTTP 回應不同。

最常搞錯的地方

  • 以為「串流輸出=WebSocket」。多數 LLM API 的逐字串流用的是 SSE,它建立在一般 HTTP 上、單向推送就夠;WebSocket 是另一種更重的雙向連線。
  • 用輪詢假裝即時:每秒問一次「好了沒」。這會浪費大量請求、更容易撞到速率限制,延遲感也明顯。要即時就用長連線(SSE/WebSocket)。

相關詞條

下一步