Socket io命名空间服务器向客户端

时间:2016-12-15 06:45:18

标签: node.js socket.io

您好我一直在查询我的socket io服务器为什么向客户端发送三次的问题。

免责声明:这不是一个重复的问题,请仔细查看我的问题

这就是我如何绑定服务器来表达

var server = http.createServer(app);

 var io = require('socket.io').listen(server);
//var io = require('socket.io')(http);
require('./routes/sock')(io);


//server.listen(port);
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

现在这是我在routes/sock文件中监听的方式,我只是创建一个命名空间并开始侦听事件

module.exports = function (io) {

    var chat = io.of('/chat');

    chat.on('connection', function (cs) {

        console.log('User Connected to chat');

        // save client id
        var socketid = cs.id;
        chat.setMaxListeners(0);

        cs.on('my message', function (event) {
            chat.to(socketid).emit('my message', 'for your eyes only');
        });

        cs.on('second message', function (event) {
            chat.to(socketid).emit('second message', 'for your eyes only');
        });

       cs.on('third message', function (event) {
            chat.to(socketid).emit('third message', 'for your eyes only');
        });

      .....
      //other events follow with the same flow
    })
}

分析

在客户端,我有日志,客户端只发出一次, 但是,当服务器响应时,它会向客户端发出三次,使客户端侦听器触发三次

我做错了什么? 这不是一个重复的问题,没有人遇到与命名空间相同的问题。

1 个答案:

答案 0 :(得分:0)

更新,我的套接字服务器没有任何问题,问题出在我的客户端android,我的客户端可以多次监听,它在android活动生命周期中。基本上我的android开发人员告诉我,他在onResumeonPause中调用了监听器,使其听两次。无论如何我不是一个Android开发者,我只希望没有人得到同样的问题。