Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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 Socket.io无法发送到某些计算机上的客户端_Node.js_Websocket_Socket.io - Fatal编程技术网

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

Node.js Socket.io无法发送到某些计算机上的客户端,node.js,websocket,socket.io,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) {

使用以下简单的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>

var socket=io.connect();
socket.on('news',函数(数据){;
控制台日志(“测试”);
emit('my other event',{my:'data'});
});
如果我将间隔设置为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”

在控制台[服务器端]上按节点显示任何错误或日志?不,服务器端似乎一切正常。“我的其他事件”事件也被正确接收(如果客户端接收到一批13个“新闻”事件,则以13个为一批)节点0.8非常旧,也许是时候更新到0.10了?我故意使用0.8。当我想将socket.io与节点http代理一起使用时,0.10会出现问题,请参阅这是否意味着您在客户端和服务器之间有一个代理?