Socket io在唱出并重新登录后返回两个阵列

时间:2015-05-14 12:54:28

标签: javascript node.js socket.io

我希望socket io将数组发送到客户端。当用户首次登录时这是成功的,但是当用户注销然后重新登录时,套接字io发出两个相同的阵列。我似乎无法弄清楚为什么会这样做。 这是我的代码服务器端:

var object = [];
  query.find({
    success: function(results){
      for(var i=0; i< results.length; i++){
        var file = results[i].toJSON();
        for(var k in file){
          if (k ==="javaFile"){
            for(var t in file[k]){
               if (t === "name"){
                  temp = file[k][t];
                  var getname = temp.split("-").pop();
                  object[i] = getname;

               }                  
            }
          }
        }
      }
    }
  });

io.on('connection', function(socket){
    socket.emit("FileName", object);
     console.log(object);
  });

这是我的客户方:

socket.on('FileName', function(data){
var name = JSON.stringify(data);
console.log(data);
 clients[socket.id] = socket;

1 个答案:

答案 0 :(得分:0)

当您退出时,请确保取消订阅听众。

这样的事情应该有效:

socket.removeAllListeners("FileName");

或者你可以像这样取消发布:

socket.removeListener("FileName");

参考:Google Groups Discussion

这意味着下次您登录并登录时只有1个订阅要发送到。

Related Question