我正在开发Twitter搜索网络应用http://twitter.batak.tk/,本地一切正常,但当我在OPENSHIFT MEAN堆栈服务器(免费)上部署时,我收到此错误:
WebSocket connection to 'ws://nodejs-igrica.rhcloud.com/socket.io/?EIO=3&transport=websocket&sid=Wtvf6VI-9QqTvICUAAAI' failed: Error during WebSocket handshake: Unexpected response code: 400
twitter.batak.tk只是nodejs-igrica.rhcloud.com的别名。
这是我的套接字服务代码:
app. factory('SearchService', ['socketFactory', function(socketFactory) { var myIoSocket = io.connect('http://nodejs-igrica.rhcloud.com/:8000', {'forceNew':true }); mySocket = socketFactory({ ioSocket: myIoSocket }); return mySocket; }]);
这是一个server.js: https://github.com/isBatak/twitter_search_web_app/blob/master/server.js
我坚持这个......
答案 0 :(得分:4)
问题来自Openshift。您必须指定要使用的端口套接字。只需写:
var ioSocket = io.connect('http://my-site.rhcloud.com:8000');
您必须使用端口8000。 来源:question/answer,和你一样的问题
<强>附加强>
您应该使用子域来访问您的openshift应用。例如:
http://node.yourdomain.com:8000
而不是
http://my-site.rhcloud.com:8000
请记住,您必须在OpenShift中为您的装备设置别名才能正确重定向。
答案 1 :(得分:1)
您是否使用websocket.org echo服务尝试服务器?