我希望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;
答案 0 :(得分:0)
当您退出时,请确保取消订阅听众。
这样的事情应该有效:
socket.removeAllListeners("FileName");
或者你可以像这样取消发布:
socket.removeListener("FileName");
这意味着下次您登录并登录时只有1个订阅要发送到。