Heroku H15错误与长生不老药/凤凰频道
一旦我开始在Phoenix上使用频道,我就开始在Heroku上遇到很多这样的错误: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
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=
在笔记本电脑上重现这一点的可靠方法是:
1.4.2
,Phoenix1.2.1
,我的Phoenix.js
刚刚升级到Phoenix1.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错误代码的含义;不幸的是,我已经设置了超时,但这并不能阻止错误的发生。啊,我的错误-在频道
上设置了超时
参数,而不是传输
。把它放在传输
,它应该在的地方,确实解决了问题!