如何删除 io.socket 命名空间事件?

How to remove io.socket namespace events?

如何简单地删除 io.socket 命名空间?

 delete io.nsps['/my_namespace'];

这不会阻止现有连接的客户端触发事件。

确定点 1)

 nsp= io.of('/my_namespace');
 nsp.removeAllListeners("my_event"); //this doesnt' work

2.)当然我可以为此做一个if语句,但我认为这不是 干净的解决方案。

3.)我不知道如何在不关闭用户的完整套接字(不仅仅是命名空间)的情况下使用命名空间执行此操作。

我的问题是,当我关闭聊天并删除所有保存的数组和东西时,我得到一个错误,因为事件仍然可以被触发(访问现在未定义的数组,当然我可以检查它们是否存在但它是更容易阻止事件),比如发送或断开连接event.I不想在客户端阻止它,因为安全问题。

目前还不是很清楚你到底想做什么。要停止接收传入的套接字事件,您有多种选择:

  1. 删除所有套接字事件处理程序。
  2. 设置您的事件处理代码检查的标志,如果设置了标志,它将跳过正常代码执行。
  3. 断开该命名空间上的所有客户端并拒绝新连接。

一如既往,如果您告诉我们您真正想要解决的问题而不是仅仅询问您想要实施的解决方案,我们可能会提供更好的答案。请参阅 description of the XY Problem 讨论为什么询问您的实际问题比询问您尝试的解决方案的问题更好。