Socket.io无法在某些计算机上发送到客户端

时间:2014-01-10 10:49:39

标签: node.js websocket socket.io

使用socket.io的以下简单应用程序,我得到了非常奇怪的行为,但只在我测试过的某些计算机上。在大多数计算机上,它似乎工作正常。这是我使用的设置:

server.js:

var app = require('http').createServer(handler)
    , io = require('socket.io').listen(app)
    , fs = require('fs')

app.listen(80);

function handler (req, res) {
    fs.readFile(__dirname + '/index.html',
    function (err, data) {
        if (err) {
            res.writeHead(500);
            return res.end('Error loading index.html');
        }

        res.writeHead(200);
        res.end(data);
    });
}

io.sockets.on('connection', function (socket) {
    i = 0;
    setInterval(function() {
        socket.emit('news', 'test');
    }, 200);
    socket.on('my other event', function (data) {
        console.log(data);
    });
});

的index.html:

<html>
    <script src="/socket.io/socket.io.js"></script>
    <script>
        var socket = io.connect();
        socket.on('news', function (data) {;
            console.log("test");
            socket.emit('my other event', { my: 'data' });
        });
    </script>
</html>
<body></body>

如果我将间隔设置为30而不是200毫秒,它似乎运行良好(即客户端和服务器都按时接收套接字消息),但是当我将间隔设置为100或更多毫秒时,客户端会不响应服务器发送的前13条(因此是13条)消息,然后突然一次接收所有13条消息,直接出现此错误:

“与'ws://example.com/socket.io/1/websocket/63zOWQ5mEuzV01WuqZ5X'的WebSocket连接失败:无法识别的帧操作码:11”。

此行为会重复一段时间,因此突然收到13个消息的集合,然后发生错误,但有时,在随机数量的错误集之后,它会再次开始正常运行。我知道这听起来很奇怪,但我找不到这个问题的根源,这极大地影响了用户体验。什么可能引发这个问题?

我使用的是node.js版本0.8.24,socket.io 0.9.14和chrome版本31.0.1650.63 m。我在CentOS 6.5版上运行。在IE 10上也会发生此行为,并出现其他错误:“SCRIPT12152:WebSocket错误:网络错误12152”

0 个答案:

没有答案