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]

Heroku Websocket到自定义域

使用 2 个 Dynos 在 Heroku 上运行 Discord.js 机器人会触发 2 个事件。每个 websocket 连接 1 个

为啥我的应用无法在 Heroku 上建立 websocket 连接?

Heroku:Rails 5 ActiveCable 配置问题。 WebSocket 握手期间出错:缺少“升级”标头

Heroku 应用程序:WebSocket 握手期间出错:意外的响应代码:200