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 连接