Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js WebSocket响应502_Node.js_Sockets_Websocket_Socket.io_Openshift - Fatal编程技术网

Node.js WebSocket响应502

Node.js WebSocket响应502,node.js,sockets,websocket,socket.io,openshift,Node.js,Sockets,Websocket,Socket.io,Openshift,在本应支持WebSocket的OpenShift上,我使用以下socket.io代码得到以下响应: WebSocket握手期间出错:意外响应代码:502 在日志中,我可以看到: 警告:websocket连接无效 套接字然后回退到xhr轮询。 我想我曾经让它工作过,但不知道我做了什么改变,可能会打破它 或者,是openshift在最新升级后将停止支持WebSocket吗 代码node.js服务器socket.io var server = require('http').createServer(

在本应支持WebSocket的OpenShift上,我使用以下socket.io代码得到以下响应:

WebSocket握手期间出错:意外响应代码:502

在日志中,我可以看到:

警告:websocket连接无效

套接字然后回退到xhr轮询。 我想我曾经让它工作过,但不知道我做了什么改变,可能会打破它

或者,是openshift在最新升级后将停止支持WebSocket吗

代码node.js服务器socket.io

var server = require('http').createServer(self.app);

server.listen(self.port, self.ipaddress, function() {
     console.log('%s: Node server started on %s:%d ...', Date(Date.now() ), self.ipaddress, self.port);
});

var io = require('socket.io').listen(server);

io.configure(function () { 
    io.set("polling duration", 120); 
    io.set("heartbeat timeout", 120);
    io.set("close timeout", 120);
});            

io.sockets.on('connection', function (socket) {
    socket.on('message', function (data) {
        socket.emit('message', data);
        socket.broadcast.emit('message', data);
     });
});    
客户端代码:

<script>    
    var socket = io.connect('http://xy-app.rhcloud.com');

    socket.on('message', function(data) {
        $("#messages").prepend("<p>" + data.content + "</p>");
    }); 
</script>

似乎您以错误的方式配置了服务器,将这些配置属性设置为您可能不知道的值。你看过文件了吗?您知道什么是轮询持续时间、心跳超时和关闭超时吗?可能您为这些指定了不正确的值。您可能希望这样做,这将起作用:

io.configure(function () { 
io.set("polling duration", 30);
io.set("heartbeat timeout", 120);
io.set("heartbeat interval", 25);
io.set("close timeout", 120);

})

嗯,我认为这些值只与轮询传输有关。此外,我可以看到您的配置和我的配置之间的唯一区别是,我将轮询持续时间设置为120,而不是30。不过,感谢您的建议,我稍后会尝试并让您知道。这并不是将其设置为30秒或60秒,我只是尝试向您显示轮询持续时间和心跳间隔应小于心跳超时。我现在已设置了此精确配置,但没有帮助,仍然使用websocket连接返回轮询无效。当我看到一些指向端口8000的文章时,尝试使用端口8000,现在我得到“信息:握手授权”,然后是“调试:销毁非socket.io升级”,再次返回轮询。