首页 >后端开发 >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