眾所周知,騰訊雲 CDN 是支援 WebSocket 的,但是最近的一個專案中使用 SignalR 時發現在生產環境中 WebSocket 連結總是在聯通 10 秒左右自動斷開,錯誤程式碼 1006.

經過與騰訊雲的工程師討論,得知:

CDN 預設的回源超時時間是10秒
回源超過 10 秒無資料會回源失敗。

也就是說 WebSocket 必須至少每 10 秒有一次互動,否則會被斷開。

同理 long polling 也受此規則的影響。

使用心跳包可以避免連結被斷開。