題幹與適用場景
一個協作白板需要傳輸游標、批次編輯和檔案片段。請比較 WebTransport 與 WebSocket,並說明如何依訊息可靠性、順序、壅塞、瀏覽器相容性和維運能力做選型。
WebSocket 提供成熟的雙向訊息通道;WebTransport 基於 HTTP/3,提供可靠的單向或雙向串流,以及允許遺失的資料報。題目考察傳輸語意與系統限制的匹配,不能只用「HTTP/3 更快」作結論。
面試官考察點
第一,能否把資料分成必須可靠交付和允許遺失兩類。第二,能否理解串流與資料報的順序、背壓、壅塞和關閉語意。第三,能否評估 HTTP/3 伺服器、憑證、代理、瀏覽器支援、回退和觀測成本。
30 秒回答框架
「我先依資料語意拆分:編輯操作和檔案片段使用可靠、有背壓的雙向串流;游標位置等過期即失效的資訊可用資料報。若目標瀏覽器、閘道和伺服器尚未穩定支援 WebTransport,我會先用 WebSocket,並保留能力探測後的回退。兩種方案都需要鑑權、配額、心跳、斷線重連和指標;最後用端到端遺失、延遲、重連和維運成本驗證。」
分步驟深入解答
第一步:定義每類訊息的交付契約
編輯操作需要可靠交付和明確順序,通常還要帶操作 ID 去重;檔案片段需要可靠串流、分塊校驗和可恢復進度。游標、拖曳預覽等狀態只保留最新值,可接受遺失和亂序。
第二步:理解 WebSocket 邊界
WebSocket 訊息模型簡單、生態成熟,適合統一的可靠雙向通道。應用層要自行定義訊息類型、背壓、心跳、重連、廣播和大訊息拆分。若所有資料都走同一邏輯通道,某類大訊息可能影響其他訊息調度。
第三步:理解 WebTransport 能力
WebTransport 把可靠的單向或雙向串流與不可靠資料報放在同一連線抽象中。串流適合有序位元組傳輸,資料報適合低延遲但可遺失的更新。實作必須尊重串流的 ready、關閉和錯誤狀態,不能假設資料報一定到達。
第四步:為資料報設計過期與去重
資料報應攜帶實體 ID、序號或時間戳;接收端丟棄過期狀態,不能把遺失當成業務失敗。游標只保留每個使用者最新位置,統計或編輯確認仍使用可靠串流。
第五步:處理可靠串流的背壓與恢復
傳送端等待可寫就緒,設定每個工作階段的佇列上限;超過上限時暫停低優先級更新或斷開異常客戶端。檔案串流按區塊校驗並記錄偏移,重連後從最後確認區塊繼續。
第六步:評估部署與相容性
WebTransport 需要相容的 HTTP/3 伺服器和憑證配置,路徑還會經過代理、防火牆和負載平衡。上線前驗證瀏覽器支援、連線建立失敗、HTTP/3 降級和跨地域網路。能力不足時回退 WebSocket 或普通 HTTP。
第七步:設計鑑權和資源隔離
建立連線時驗證工作階段和來源,伺服器按使用者與租戶限制並行連線、串流數量、資料報速率和總位元組數。不要把客戶端宣告的串流優先級直接當作權限;檔案寫入仍需授權、校驗和稽核。
第八步:用端到端指標做決策
按訊息類型記錄傳送與到達時間、重連、串流錯誤、資料報遺失估計、佇列長度、CPU 和頻寬。比較兩種協定在真實網路、移動切網、代理和高並行下的體驗與成本。
設計取捨與邊界
統一通道還是多種語意
WebSocket 統一可靠訊息較容易維護;WebTransport 可分開可靠串流與低延遲資料報,但協定、測試和維運複雜度更高。只有業務確實需要兩種交付語意才承擔複雜度。
低延遲還是可恢復性
資料報減少等待,卻要求業務接受遺失和過期。關鍵狀態應走可靠串流,並以操作 ID、檢查點和重放保護恢復能力。
新協定收益還是部署風險
HTTP/3 能力不能抵消瀏覽器或網路設備不支援帶來的失敗。先小流量驗證連線成功率和回退率,再決定是否擴大 WebTransport 範圍。
失敗演練與演進計畫
HTTP/3 在企業網路不可用
模擬代理阻斷或握手失敗,確認客戶端快速回退 WebSocket,業務訊息不重複、不遺失關鍵操作,並記錄失敗原因。
游標資料積壓
限制資料報傳送速率,製造慢網路,確認舊游標被丟棄而編輯操作仍可靠交付。
檔案串流中斷
中斷連線後重連,驗證區塊校驗、偏移恢復和權限重新檢查,不允許客戶端任意偏移覆寫檔案。
常見誤區與追問
誤區一:認為 WebTransport 一定更快
追問:目標網路中的連線成功率、握手時間和回退率是多少?
誤區二:用資料報傳送關鍵編輯
追問:遺失、亂序和重複如何處理?應改用可靠串流和操作 ID。
誤區三:只討論瀏覽器 API
追問:HTTP/3 伺服器、負載平衡、憑證、代理和觀測如何落地?
誤區四:沒有背壓和配額
追問:慢客戶端如何隔離?單租戶如何限制串流數量和位元組數?
誤區五:回退路徑另寫一套業務協定
追問:WebSocket 與 WebTransport 如何保持訊息契約和冪等語意一致?
延伸追問與參考答案
游標和編輯為什麼要分開傳輸?
游標是短暫狀態,舊值很快失效,允許遺失可降低延遲;編輯必須可靠、有序並可恢復,適合可靠串流。
WebTransport 不能用時怎麼辦?
先能力探測,再回退 WebSocket 或 HTTP;保持相同的鑑權、訊息 ID、重連和業務確認語意。
如何證明選型成功?
用真實網路分組比較延遲、遺失估計、重連、佇列、CPU、頻寬和回退率,確認關鍵操作沒有遺失或重複。