Node.js WebSocket响应502
在本应支持WebSocket的OpenShift上,我使用以下socket.io代码得到以下响应: WebSocket握手期间出错:意外响应代码:502 在日志中,我可以看到: 警告:websocket连接无效 套接字然后回退到xhr轮询。 我想我曾经让它工作过,但不知道我做了什么改变,可能会打破它 或者,是openshift在最新升级后将停止支持WebSocket吗 代码node.js服务器socket.ioNode.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(
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升级”,再次返回轮询。