WebSocket握手期间出错:意外的响应代码:免费的OpenShift MEAN堆栈服务器上的400

时间:2015-05-25 07:40:12

标签: socket.io openshift mean-stack handshake

我正在开发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

我坚持这个......

2 个答案:

答案 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服务尝试服务器?