在Heroku中,使用socket.io时Websocket无法工作

8

我的应用在本地使用socket.io和websockets、xhr-polling都能够正常工作,并且在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个回答

20

我曾经遇到相同的问题,通过在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/上测试。

希望这能帮到你!


我还发现了这个答案,它也更清楚地解释了XHR轮询如何在随机保存到cookie时被激活:https://dev59.com/MmzXa4cB1Zd3GeqPSFC4#19680457 - AmpT
@Igor 很高兴能够帮忙,我很愉快! - AmpT
1
我随后通过推送到Heroku并让其重新构建来重启我的服务器。您可以通过执行heroku restart来重新启动。 - gberger
@AmpT,即使您的网站“calm”在我的浏览器中也显示了xhr-polling。 - Ashish Negi
2
为了与simpleWebRTC一起使用,我必须显式地在URL中设置端口号80,如下所示:http://myserver.herokuapp.com:80 - jmarceli
5
"heroku labs:enable" 曾经是一个很好的答案,但现在已经不再起作用了。由于在Heroku上websockets不再是实验室特性而是默认启用的,因此也不再需要使用该命令。请留意更新。 - user1147171

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接