Heroku Node.js WebSocket 服务器错误:“连接”标头值不是“升级”:升级

Posted

技术标签:

【中文标题】Heroku Node.js WebSocket 服务器错误:“连接”标头值不是“升级”:升级【英文标题】:Heroku Node.js WebSocket server error: 'Connection' header value is not 'Upgrade': Upgrade 【发布时间】:2014-06-29 05:45:41 【问题描述】:

我正在测试我在 Heroku 上使用 WebSockets 的 Node.js 应用程序,但我一直遇到这个错误:

客户:WebSocket connection to 'ws://myapp.herokuapp.com/' failed: Error during WebSocket handshake: Unexpected response code: 503

服务器:2014-05-11T23:57:15.710087+00:00 heroku[router]: at=error code=H23 desc="Endpoint misconfigured" method=GET path=/ host=myapp.herokuapp.com request_id=a874df22-4a1a-44fb-bcc5-2473bf1e6370 fwd="151.35.127.210" dyno= connect= service= status=503 bytes=

我启用了 Heroku labs websockets,程序使用 process.env.PORT

编辑:我尝试删除该应用并使用不同的名称重新创建它,但现在我收到此错误:

客户:WebSocket connection to 'ws://myapp2.herokuapp.com/' failed: Error during WebSocket handshake: 'Connection' header value is not 'Upgrade': Upgrade

服务器:2014-05-13T23:27:52.443504+00:00 heroku[router]: at=info method=GET path=/ host=myapp2.herokuapp.com request_id=c83b94a6-04ef-42cf-9837-c4bda8a85c14 fwd="151.35.127.210" dyno=web.1 connect=26 service=1029 status=101 bytes=681

有人知道是什么原因造成的吗?

提前致谢。

【问题讨论】:

【参考方案1】:

在与 Heroku 支持人员交谈了 5 天后,我已经解决了这个问题。的种类。 Heroku websockets 只是不工作。我什么都试过了。所以我最终决定尝试 OpenShift。我的应用程序(在 Heroku 上无法运行的相同代码)在 OpenShift 上完美运行,包括 websockets 和一切,只需 2 小时。

我强烈推荐 OpenShift 给任何正在寻找使用 WebSockets 托管的免费且稳定的 Node.js 的人。他们的 CLI 与 Heroku 的一样易于使用,并且免费为您提供 3 个齿轮(每个 512MB)!

以下是在 OpenShift 上使用 Node.js WebSockets 的几个技巧:

将这些变量用于服务器 ip 和端口: var ip = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1"; var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;

但是您的 websocket 客户端应该连接到: ws://app-domain.rhcloud.com:8000 wss://app-domain.rhcloud.com:8443(用于安全的 https 连接)

来源:https://www.openshift.com/blogs/paas-websockets

【讨论】:

您最终选择了自定义域吗?我刚刚完成了从 Heroku 到 Openshift 的转变。我的 SSL 证书适用于自定义域,但是,当我连接到 socket.io 时,我得到net::ERR_SSL_PROTOCOL_ERROR...我正在连接端口8443... Socket.io 使用 Openshift url 连接良好,但不是一个自定义的。 @Ramsel 不,我没有使用自定义域。我的应用仍在开发中。【参考方案2】:

在我的情况下,这是由于 MongoLab 正在更新并与我的 moongoose 版本不同步造成的。更新 moongoose 为我解决了这个问题。

【讨论】:

以上是关于Heroku Node.js WebSocket 服务器错误:“连接”标头值不是“升级”:升级的主要内容,如果未能解决你的问题,请参考以下文章

与 Hasura 的 WebSocket 连接不适用于 Node.js 上的 ApolloClient v3

无法创建到 Node.js socket.io 服务器的跨域 websocket 连接

为啥我的 websocket 在几分钟后关闭?

使用端口 80 的 AWS Elastic Beanstalk 上的 WebSocket 问题

websocket连接正在自动关闭

Heroku Node.js 版本 16