Websocket 不能在 heroku 中使用 socket.io
Posted
技术标签:
【中文标题】Websocket 不能在 heroku 中使用 socket.io【英文标题】:Websocket not working with socket.io in heroku 【发布时间】:2013-11-09 04:45:20 【问题描述】:我的应用程序在 localhost 中使用 websockets 和 xhr-polling 在 socket.io 中运行良好,并且在 heroku 中使用 xhr-polling,但由于 heroku 提供了对 websocket 的支持,我无法使用 websockets 使其运行。
我的 Chrome 控制台显示此消息:
WebSocket connection to 'ws://<myherokuapp>.herokuapp.com/socket.io/1/websocket/HBWE2BFvHahlSWk5pphp' failed: Unexpected response code: 503
我已经启用了 websocket 实验室。
有没有使用 socket.io 的 websocket 工作示例?
【问题讨论】:
【参考方案1】:我遇到了同样的问题,只是通过在 heroku 上重新激活我的应用程序上的 websockets 来解决它。 由于某种原因,它刚刚随机切换到 XHR 轮询。
我使用 heroku 网站 (@https://devcenter.heroku.com/articles/heroku-labs-websockets) 上的这个命令重新激活它:
heroku labs:enable websockets -a myapp
然后我通过推送到 heroku 并重建它(或使用:heroku restart
)来重新启动我的服务器。
我还有一个非常基本的 socket.io 聊天应用程序(由 Smitha Milli 编写)的工作副本,运行于:http://calm-gorge-8474.herokuapp.com/,您可以对其进行测试。
希望这会有所帮助!
【讨论】:
我还找到了这个答案,它还更清楚地说明了在随机保存到 cookie 时如何随机激活 XHR 轮询:***.com/a/19680457/2728686 @Igor 很高兴,很高兴我能提供帮助! “然后我通过推送到 heroku 并重建它来重新启动我的服务器。”您可以通过heroku restart
重新启动
为了与 simpleWebRTC 一起使用,我必须在 url 中明确设置端口号 80,如下所示:http://myserver.herokuapp.com:80
"heroku labs:enable" 在当时是一个很好的答案,但它不再有效,也没有必要,因为 websockets 不再是 Heroku 上的实验室功能,而是默认启用。 以上是关于Websocket 不能在 heroku 中使用 socket.io的主要内容,如果未能解决你的问题,请参考以下文章
Flask-SocketIO - WebSocket 在连接建立之前关闭。 [Heroku]
使用 2 个 Dynos 在 Heroku 上运行 Discord.js 机器人会触发 2 个事件。每个 websocket 连接 1 个
为啥我的应用无法在 Heroku 上建立 websocket 连接?