我构建了一个简单的客户端记录器,它在我的页面上打印所有当前活动的 socket.io 侦听器。我直接从套接字对象和内部$events对象获取这些信息。
$events 对象在 chrome 中如下所示:
$events: Object
news: function (data) {
__proto__: Object
但是,当使用socket.removeAllListeners('news')删除事件的侦听器时,它看起来像这样:
$events: Object
news: null
__proto__: Object
属性保持不变,但值为 null。为什么没有完全删除?
当您使用socket.once()并从服务器获取一个发射时,或者当您使用 socket.removeListener() 直接删除具体侦听器时,该属性将被删除,它看起来像这样:
$events: Object
__proto__: Object
我真的很想知道它为什么会这样。它是否仍在侦听以 null 为值但不调用任何函数的事件?