【发布时间】:2012-11-17 12:20:44
【问题描述】:
在 socket.io 中,当客户端与服务器断开连接时,服务器会为套接字触发 disconnect 事件。我必须从套接字$events 发送removeAllEventListeners() 吗?或者当套接字死亡时它会自动发生吗?听说如果我不这样做,服务器上可能会出现内存泄漏...
【问题讨论】:
在 socket.io 中,当客户端与服务器断开连接时,服务器会为套接字触发 disconnect 事件。我必须从套接字$events 发送removeAllEventListeners() 吗?或者当套接字死亡时它会自动发生吗?听说如果我不这样做,服务器上可能会出现内存泄漏...
【问题讨论】:
挖掘socket.io源码后,当客户端断开连接时,socket对象(即EventEmitter)被删除,因此无需手动调用removeAllListeners。
【讨论】:
.on('connect' 再次触发,.on('connect' 回调中的侦听器再次分配。我刚遇到这种情况。 1 次重新连接后双听者
.on('connect') 会在每次连接发生时触发,不是吗?不知道你的意思是什么。如果需要在重连时重新添加监听器,为什么不能使用.on('connect')?无论是客户端还是服务器。
socket.on('connect', ...) 内添加类似socket.on('custom', ...) 的事件,您最终将在重新连接后为同一custom 消息获得两个相同的事件.在 node.JS 中,每个“连接”事件都有一个新的“干净”套接字对象,即使它来自旧客户端重新连接,所以在 on('connect', ...) 中添加自定义事件实际上是添加监听事件的正确方法来自您的客户。