Javascript 套接字io在唱出并重新登录后返回两个数组
我希望套接字io向客户端发送一个数组。当用户首次登录时,这是成功的,但是当用户注销然后重新登录时,套接字io将发送相同阵列中的两个。我似乎不明白它为什么会这样。 以下是我的代码服务器端:Javascript 套接字io在唱出并重新登录后返回两个数组,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我希望套接字io向客户端发送一个数组。当用户首次登录时,这是成功的,但是当用户注销然后重新登录时,套接字io将发送相同阵列中的两个。我似乎不明白它为什么会这样。 以下是我的代码服务器端: var object = []; query.find({ success: function(results){ for(var i=0; i< results.length; i++){ var file = results[i].toJSON();
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.removeAllListeners("FileName");
或者你也可以这样做:
socket.removeListener("FileName");
参考:
这意味着下次您登录时,只有一个订阅要发送到
注销时,您没有取消对套接字的订阅。所以你的socket.on'FileName'注册了两次。我似乎无法让它工作。我得到TypeError:侦听器必须是一个函数。在signout下的路由中,我在'disconnect'上写了io.on,functionsocket{socket.removeAllListener'FileName}@removeAllListeners你在结尾缺少一个S,我也试过了,它不起作用。我没有收到任何错误消息,但是它不会删除侦听器。
socket.removeListener("FileName");