首頁 >後端開發 >Golang >為什麼 Heroku 上的 Go WebSocket 應用程式在連線關閉時會拋出 H15 錯誤?

為什麼 Heroku 上的 Go WebSocket 應用程式在連線關閉時會拋出 H15 錯誤?

Patricia Arquette
Patricia Arquette原創
2024-12-12 10:57:14649瀏覽

Why Does My Go WebSocket App on Heroku Throw an H15 Error on Connection Closure?

Heroku Web Socket 終止時出現H15 錯誤

在Heroku 上部署Go Web Socket 服務時,使用者經常會遇到令人沮喪的「H15 錯誤」在套接字連線終止期間。此錯誤表示請求花費了過多的時間,儘管客戶端每 20 秒 ping 一次伺服器以保持連線處於活動狀態。

此問題的根本原因在於 Heroku 的「誤報」本質路由器引擎。詳細說明如下:

連接建立和心跳

  1. 建立WebSocket 連接後,客戶端和伺服器通常會先進行HTTP 輪詢連接,然後再切換到WebSocket。
  2. 轉換到 WebSocket 後,用戶端會定期發送心跳以防止 Heroku Router終止請求。
  3. 只要收到這些心跳,Heroku 路由器計時器就會保持重置狀態。

連線終止和 H15 錯誤

但是,當客戶端關閉連線時,Router 會偵測到請求終止,並假設從請求啟動到關閉。這會導致記錄“service=X 毫秒”錯誤,儘管連線已處於活動狀態並具有定期心跳。

結論

Heroku Web 套接字上的H15 錯誤終止主要是由於系統無法區分客戶端發起的關閉和長時間不活動而導致的誤報。它通常發生在用戶離開或關閉應用程式時,導致無害但煩人的錯誤訊息。

以上是為什麼 Heroku 上的 Go WebSocket 應用程式在連線關閉時會拋出 H15 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn