Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Heroku H15错误与长生不老药/凤凰频道_Heroku_Elixir_Phoenix Framework_Phoenix Channels - Fatal编程技术网

Heroku H15错误与长生不老药/凤凰频道

Heroku H15错误与长生不老药/凤凰频道,heroku,elixir,phoenix-framework,phoenix-channels,Heroku,Elixir,Phoenix Framework,Phoenix Channels,一旦我开始在Phoenix上使用频道,我就开始在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

一旦我开始在Phoenix上使用频道,我就开始在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=
在笔记本电脑上重现这一点的可靠方法是:

  • 打开连接到WebSocket的Phoenix页面
  • 合上笔记本电脑的盖子
  • 等待一分钟左右(WiFi断开连接/OS进入睡眠状态)
  • 将发生H15错误
  • 我已经在我的用户通道上设置了45秒超时;我正在运行Elixir
    1.4.2
    ,Phoenix
    1.2.1
    ,我的
    Phoenix.js
    刚刚升级到Phoenix
    1.3.0-rc0中使用的版本()

    我可以在前端看到记录的错误,但在这之后,它会愉快地重新连接到后端:

    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,因此我正在寻找一个修复或解决方法来消除错误(当然除了从Heroku迁移之外)。

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

    defmodule HelloWeb.UserSocket do
      use Phoenix.Socket
    
      ...
    
      ## Transports
      transport :websocket, Phoenix.Transports.WebSocket,
        timeout: 45_000
        ...
    end
    
    他们的解释是:


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

    --这可能会回答您的问题。@JustinWood感谢您的链接,但我正在为我的Phoenix应用程序寻找解决此问题的方法,而不是解释H15错误代码的含义;不幸的是,我已经设置了超时,但这并不能阻止错误的发生。啊,我的错误-在
    频道
    上设置了
    超时
    参数,而不是
    传输
    。把它放在
    传输
    ,它应该在的地方,确实解决了问题!