我正在测试在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
有谁知道造成这种情况的原因是什么?
提前致谢。
答案 0 :(得分:3)
在与Heroku支持人员聊天5天后,我已经解决了这个问题。的种类。 Heroku websockets只是不起作用。我尝试了一切。所以我最终决定尝试OpenShift。我有我的应用程序(相同的代码,不在Heroku上工作)完美地在OpenShift上运行,只需2小时即可使用websockets和所有内容。
我强烈推荐OpenShift给任何正在寻找使用WebSockets托管的免费且稳定的Node.js的人。它们的CLI和Heroku的一样容易使用,它们可以免费为您提供3个齿轮(每个512MB)!
以下是在OpenShift上使用Node.js WebSockets的一些提示:
将这些变量用于服务器 ip和port:
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连接)
答案 1 :(得分:-1)
在我的情况下,它是由MongoLab更新并与我的moongoose版本不同步造成的。更新moongoose为我解决了。