Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 移除disconnect socket.io上的对象_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript 移除disconnect socket.io上的对象

Javascript 移除disconnect socket.io上的对象,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在使用Nodejs和Socket.io。当客户端连接时,将创建新的JavaScript对象 这些物体会永远停留吗?当客户端断开连接时,是否应删除或删除它们?甚至可以移除一个对象吗?我知道删除不起作用 谢谢-我想这是一个更一般的问题,任何建议都会非常有用 谢谢 如果你不清理,那么是的,它们将永远留在那里,因为我认为你正在使它们全球化 一旦用户断开连接,您应该通过绑定到断开连接事件侦听器进行清理: var clients = {} sockets.on('connection', functio

我正在使用Nodejs和Socket.io。当客户端连接时,将创建新的JavaScript对象

这些物体会永远停留吗?当客户端断开连接时,是否应删除或删除它们?甚至可以移除一个对象吗?我知道删除不起作用

谢谢-我想这是一个更一般的问题,任何建议都会非常有用


谢谢

如果你不清理,那么是的,它们将永远留在那里,因为我认为你正在使它们全球化

一旦用户断开连接,您应该通过绑定到
断开连接
事件侦听器进行清理:

var clients = {}
sockets.on('connection', function(socket) {
  clients[socket.id] = socket;

  socket.on('disconnect', function() {
    delete clients[socket.id];
  });
});

太好了,谢谢!我假设我可以对“客户机”使用相同的方法来跟踪其他对象?在创建的“套接字”功能之外还有其他几个对象。jup!有些人会在“socket”变量中添加对象,然后自动销毁它
socket.data=“foo”
然后客户端就有了该套接字的id。我不知道为什么,但是
删除客户端[socket.id]有时就是不起作用。根据我的研究,这似乎是一个socket.io问题…@christian yup我也有这个问题…grrrrrr…我最后使用了“卸载时同步断开”:在io.connect(客户端)中是真的,但不知怎的,它起了作用
删除
严格模式下是不允许的
有其他方法来实现这一点吗?你能补充一些解决方案的细节吗?只有代码的答案没有多大帮助。
   socket.on('disconnect', disc => {
    console.log("disconnect");
    console.log(socket.id);
    console.log(rects);
    console.log(rects.indexOf(id));
      let index = rects.indexOf(id);
      rects.splice(index, 1);
      socket.broadcast.emit("discon", id);  
   });