WebSocket 長連線與訊息同步機制
WhatsApp網頁版並非透過輪詢(polling)取得新訊息,而是與伺服器建立一條持久的 WebSocket 連線。當手機端處於線上狀態時,手機應用程式會將訊息透過端對端加密通道轉發至網頁端。這條連線在瀏覽器分頁切換到背景時可能被瀏覽器節流(throttling),導致訊息延遲送達。多數情況下,Chrome 與 Edge 對背景分頁的計時器限制約為每分鐘一次,因此若你發現網頁版訊息比手機晚 30 至 60 秒才出現,屬於正常的瀏覽器行為,而非連線中斷。
開發者若需自行檢測連線品質,可開啟瀏覽器開發者工具(F12)的 Network 面板,篩選 WS 類型,觀察 web.whatsapp.com 的 WebSocket 幀(frame)傳輸頻率。正常閒置狀態下,每 30 秒左右會有一次心跳(heartbeat)幀;若超過 90 秒未見任何幀,代表連線已進入半開(half-open)狀態,此時重新整理頁面比等待自動重連更可靠。
端對端加密在網頁端的金鑰處理
WhatsApp 使用 Signal Protocol 進行端對端加密。網頁版本身不持有長期私鑰,而是透過手機端授權後,在瀏覽器工作階段(session)中建立暫時性的金鑰材料。具體流程是:手機掃描 QR code 後,手機端將一組加密的認證資訊透過 WhatsApp 伺服器傳遞給網頁端,網頁端以此建立與聯絡人的會話金鑰。這意味著若你在多個瀏覽器分頁同時開啟網頁版,每個分頁會各自協商獨立的會話金鑰,彼此不共用。
常見的錯誤認知是以為「網頁版關閉後金鑰仍留在瀏覽器」。實際上,當你登出或關閉所有分頁後,工作階段金鑰即失效,下次登入需要重新掃碼。若使用無痕模式(Incognito),關閉視窗即清除所有本機儲存(localStorage 與 IndexedDB),這是測試多帳號時常用的做法,但每次都要重新掃碼,不適合日常長期使用。
瀏覽器相容性與資源佔用實測
WhatsApp網頁版官方支援 Chrome、Edge、Firefox、Opera 與 Safari(macOS 版本)。在實際測試中,單一 WhatsApp 分頁的記憶體佔用通常介於 250 MB 至 450 MB 之間,視對話數量與媒體快取大小而定。若同時開啟超過三個分頁,總記憶體可能突破 1 GB,在 8 GB 記憶體的機器上容易觸發瀏覽器分頁捨棄(tab discarding),造成訊息漏接。
以下是各瀏覽器在相同硬體條件下的常見表現差異,供開發者與進階使用者參考:
| 瀏覽器 | WebSocket 穩定度 | 記憶體佔用(單分頁) | 通知支援 | 備註 |
|---|---|---|---|---|
| Chrome 120+ | 高 | 約 300–450 MB | 完整 | 背景分頁節流較明顯 |
| Edge 120+ | 高 | 約 280–420 MB | 完整 | 與 Chrome 同核心,行為接近 |
| Firefox 121+ | 中高 | 約 250–380 MB | 完整 | 長時間閒置後重連較慢 |
| Safari 17+(macOS) | 中 | 約 200–350 MB | 需系統授權 | ITP 可能限制本機儲存 |
若你經常在單一瀏覽器開啟多個通訊服務,建議將 WhatsApp 網頁版獨立放在一個瀏覽器設定檔(profile)中,避免與其他高記憶體頁面互相排擠。
登出與裝置管理的實務注意事項
從手機端進入「已連結的裝置」可以看到所有目前有效的網頁版與桌面版工作階段,每一筆記錄會顯示作業系統與最後活躍時間。多數情況下,系統保留紀錄約 30 天,但實際可回溯時間依帳號活動而定。若發現不認識的裝置,應立即點選「登出」並在手機端重新驗證電話號碼。
常見錯誤是只關閉瀏覽器分頁而沒有真正登出。關閉分頁僅中斷該分頁的 WebSocket,伺服器端的裝置授權仍然有效,直到你從手機端手動登出或超過 14 天未使用為止。若在公用電腦使用,務必執行「登出所有裝置」而非僅關閉視窗。另一個常見問題是企業網路封鎖 WebSocket 的 443 埠以外的連線,此時可嘗試切換至手機熱點測試,以確認是否為網路環境造成。