WebSocket响应502

时间:2014-02-26 21:10:17

标签: node.js sockets websocket socket.io openshift

在应该支持websockets的OpenShift上,使用以下socket.io代码我得到了这个回复:

  

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

在日志中,我可以看到:

  

警告:websocket连接无效

套接字然后回退到xhr-polling。 我想我曾经让它发挥作用,但不知道我改变了什么可以打破它。

或者,在最新升级后,openshift会停止支持websockets吗?

代码(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>

1 个答案:

答案 0 :(得分:0)

似乎您通过将这些配置属性设置为您可能不知道的值,以错误的方式配置了服务器。你看过文档吗?你知道polling durationheartbeat timeoutclose timeout是什么吗?可能你已经为这些分配了不正确的值。您可能希望这样做,这将起作用:

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

});