我在 Heroku 上使用 socket.io 和 node.js。一切似乎都奏效了。但是,在 Chrome 开发栏中,我得到Unexpected response code: 503
. 有谁知道这可能意味着什么?我应该担心吗?它会占用浏览器的内存吗?如果是这样,我可以压制它吗?
问问题
8196 次
2 回答
26
Heroku 在 Cedar 堆栈上“不支持”websockets (没有关于何时支持的消息)更新:见下文。 他们建议将以下代码添加到您的 Socket.io 实现中:
// assuming io is the Socket.IO server object
io.configure(function () {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 10);
});
这样做的原因是 Heroku 在你的测功机之上添加了一个路由层。您的代码将在服务器上执行,但不确定它将是哪个服务器。因此,WebSockets 无法将数据发送到“正确”的服务器。Socket.IO 将降级为长轮询,通过路由层保持连接处于活动状态,确保事件将在正确的服务器上执行。
更新:Heroku WebSockets现在处于公开测试阶段!heroku labs:enable websockets -a myapp
您可以通过在您的应用程序目录中执行来为您的应用程序添加 WS 支持。
于 2013-04-03T14:46:54.507 回答
3
对于 2016 年来自谷歌的人。
现在支持 Heroku websockets,无需打开它们。Heroku 上的 WebSockets
请务必检查您在 Heroku 上的日志。我注意到 503 错误发生在 chrome 中,检查日志后发现我的 Heroku 应用程序崩溃了。我的代码中有一个错误导致它没有响应(根本与 socket.io 无关)
修复了代码,503 消失了!
于 2016-03-17T21:39:59.590 回答