问node+socket.io 数据会重复发多次?
发布于 2年前 作者 zcl521ss 2401 次浏览
    var io = require('socket.io').listen(app);
    io.configure(function () {
        io.set("transports", ["xhr-polling"]);
        io.set("polling duration", 100);  
    });
io.sockets.on('connection', function (socket) {
   socket.broadcast.emit('system', '[' + name + ']上线了...');

    socket.on('public message', function (data) {       
        socket.broadcast.emit('public message', data); 
    });
   
      socket.on('disconnect', function () {
         socket.broadcast.emit('system', '[' + name + ']下线了....');   
    });
});

客户端:

 socket.on('connect', function () {
          socket.on('public message', function (data) {
            $("#show").append(data);
        });
            //显示系统广播
        socket.on('system', function (data) {
            $("#show").append('<span style=color:red>系统信息:' + data + '</span><br/>');
        });
    
    });

运行后,打开2个浏览器,先开始正常,打开一个,然后再打开另一个,会正常提示XXX上线了,发信息也没有问题。 但是2个浏览器不做任何操作后(没有关闭浏览器),一段时间,会提示XXX下线了。再过一段时间又自动XXX上线了,而且以后的数据都是重复的,比如发送消息:“你好”,然后另一个浏览器里会显示两边**"你好"**,用这个浏览器回复消息没有问题,会正常显示1条消息。

网上搜了很久,都没找到答案。 是不是

io.set("transports", ["xhr-polling"]);
io.set("polling duration", 100);

设置有问题

2 回复

你把socket.io客户端升级到最新的0.9x的就好了

回到顶部