在应该支持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>
答案 0 :(得分:0)
似乎您通过将这些配置属性设置为您可能不知道的值,以错误的方式配置了服务器。你看过文档吗?你知道polling duration
,heartbeat timeout
和close timeout
是什么吗?可能你已经为这些分配了不正确的值。您可能希望这样做,这将起作用:
io.configure(function () {
io.set("polling duration", 30);
io.set("heartbeat timeout", 120);
io.set("heartbeat interval", 25);
io.set("close timeout", 120);
});