WebSocket 上的Heroku H15 錯誤關閉:了解「誤報」
使用Heroku 託管WebSocket 的Go 服務時伺服器端,Socket連線關閉時可能會遇到H15 錯誤。此錯誤通常是由於 Heroku 的路由器錯誤地將超時連接解釋為高延遲請求而觸發。
要了解這個問題,讓我們深入研究WebSocket 連線建立過程:
-
WebSocket 連線啟動:
- 客戶端發起WebSocket連接,最初建立HTTP輪詢連線。
- 連線升級為WebSocket協定後,客戶端定期發送心跳訊息以維持
-
Heroku 路由器逾時:
- Heroku 路由器為每個請求設定55 秒的逾時。在心跳期間,路由器的逾時定時器會重置。
- 當客戶端終止連線時WebSocket 連線(例如,瀏覽器選項卡關閉),Heroku路由器將請求註冊為
由於WebSocket 連線先前開啟且處於活動狀態(即,心跳機制),Heroku路由器錯誤地將其歸類為「空閒」請求持續時間
這種不匹配會導致路由器記錄 H15 錯誤,表明請求超出了超時限制。
需要注意的是,H15錯誤通常是由客戶端發起的 WebSocket 連線終止引起的,而不是實際的執行時間問題。因此,請將此錯誤視為“誤報”,除非伴隨其他服務降級症狀,否則無需擔心。
以上是為什麼我的 Heroku Go WebSocket 應用程式在連接關閉時產生誤報 H15 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!