gpt4 book ai didi

Elixir/Phoenix Channels 的 Heroku H15 错误

转载 作者:行者123 更新时间:2023-12-03 22:31:08 25 4
gpt4 key购买 nike

一旦我开始在 Phoenix 上使用 Channels,我就开始在 Heroku 上遇到很多这些错误:

heroku[router]: at=error code=H15 desc="Idle connection" method=GET
path="/socket/websocket?guardian_token=eyJhbGciOiJIUz[...]&vsn=1.0.0" host=[...]
dyno=web.1 connect=0ms service=87803ms status=503 bytes=

重现这一点的可靠方法是在笔记本电脑上:
  • 打开连接到 WebSockets 的 Phoenix 页面
  • 合上笔记本电脑的盖子
  • 等一下(WiFi 断开连接/操作系统进入休眠状态)
  • 将发生 H15 错误。

  • 我已经在我的 UserChannel 上设置了 45 秒的超时时间;我正在运行 Elixir 1.4.2 , Phoenix 1.2.1和我的 phoenix.js刚刚升级到 Phoenix 用的那个 1.3.0-rc0 ( link to rev )

    我可以看到前端记录的错误,但之后它愉快地重新连接到后端:
    2017-03-04 23:28:55.351 receive: ok user:2 phx_reply (3)
    2017-03-04 23:29:24.269 channel: error user:2
    2017-03-04 23:29:28.713 push: user:2 phx_join (4)
    2017-03-04 23:29:28.745 receive: ok user:2 phx_reply (4)

    非常感谢任何帮助或想法如何解决这个问题。

    编辑:我熟悉 Heroku 的 H15 error code definition所以我正在寻找解决方法或解决方法来消除错误(当然,除了从 Heroku 迁移之外)。

    最佳答案

    Phoenix docs建议将 websocket 传输的超时设置为 < 55 秒:

    defmodule HelloWeb.UserSocket do
    use Phoenix.Socket

    ...

    ## Transports
    transport :websocket, Phoenix.Transports.WebSocket,
    timeout: 45_000
    ...
    end

    他们的解释是:

    这可以确保在到达 Heroku 的 55 秒超时窗口之前,Phoenix 关闭任何空闲连接。

    关于Elixir/Phoenix Channels 的 Heroku H15 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42602678/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com