Chrome 中的“意外响应代码:503”。也许与heroku上的socket.io有关?

Posted

技术标签:

【中文标题】Chrome 中的“意外响应代码:503”。也许与heroku上的socket.io有关?【英文标题】:"Unexpected response code: 503" in Chrome. Perhaps having to do with socket.io on heroku? 【发布时间】:2012-12-19 22:46:08 【问题描述】:

我在 Heroku 上使用 socket.io 和 node.js。一切似乎都奏效了。但是,在 Chrome 开发栏中,我得到了Unexpected response code: 503。有谁知道这可能意味着什么?我应该担心吗?它会占用浏览器的内存吗?如果是这样,我可以压制它吗?

【问题讨论】:

你可以在这里找到错误代码:devcenter.heroku.com/articles/error-codes也许它会帮助你。 你在使用 websockets 吗?因为你不能在heroku上。更多信息在这里:devcenter.heroku.com/articles/… 【参考方案1】:

适用于 2016 年来自谷歌的人。

现在支持 Heroku 网络套接字,无需打开它们。 WebSockets on Heroku

请务必检查您在 Heroku 上的日志。我注意到 503 错误发生在 chrome 中,检查日志后发现我的 Heroku 应用程序崩溃了。我的代码中有一个错误导致它没有响应(根本与 socket.io 无关)

修复了代码,503 消失了!

【讨论】:

你做了什么来修复代码?我的节点应用程序在 Heroku 的 cedar-14 上。调用var ws = new WebSocket('ws://myapp.herokuapp.com'); 时,我仍然得到Unexpected response code: 503 您的错误究竟是什么?您是如何修复的?【参考方案2】:

Heroku 在 Cedar 堆栈上“不支持”websockets (没有关于何时支持的消息) 更新:见下文。 They recommend 将以下代码添加到您的 Socket.io 实现中:

// assuming io is the Socket.IO server object
io.configure(function ()  
  io.set("transports", ["xhr-polling"]); 
  io.set("polling duration", 10); 
);

这样做的原因是 Heroku 在您的测功机之上添加了一个路由层。您的代码将在 a 服务器上执行,但不确定它将是哪个服务器。因此,WebSockets 无法将数据发送到“正确”的服务器。 Socket.IO 将降级为长轮询,通过路由层保持连接处于活动状态,确保事件将在正确的服务器上执行。

更新:Heroku WebSockets 现在处于公开测试阶段!您可以通过在您的应用目录中执行heroku labs:enable websockets -a myapp 来为您的应用添加WS 支持。

【讨论】:

我尝试使用更新的答案。但是,当我这样做时,我仍然会收到 503 错误。我正在使用自定义域并已将 DNS 配置为重定向 ws:// 正如答案所说,它仍然是测试版。此时最好联系 Heroku 支持。 我还没弄明白。 @SönkeRohde 你明白了吗? “更新”对我有用,无需更改代码。但是,启用大约需要 30 秒。在那之前,我还在买 503。 “更新”也对我有用,但在 Heroku 应用程序上启用 websockets 后,我仍然收到 503 错误。我还删除了我的自定义域,然后重新启动了应用程序,然后错误就消失了(不确定是否有必要)。然后我重新添加了自定义域并再次重新启动应用程序,并且通过自定义域访问时错误也消失了。

以上是关于Chrome 中的“意外响应代码:503”。也许与heroku上的socket.io有关?的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket 连接到“ws://chattestarpit.herokuapp.com/”失败:WebSocket 握手期间出错:意外响应代码:503

我想知道如何在不通过 chrome 打印弹出窗口的情况下与网络中的打印机进行通信

Chrome应用上传失败

如何在Chrome移动浏览器中查看与网络选项卡相关的信息

Chrome扩展程序已损坏

关于 Chrome 浏览器中 onresize 事件的 Bug