如何删除一个闭包的事件监听器?

时间:2014-12-17 01:24:20

标签: javascript node.js coffeescript

我有一个闭包

的事件处理程序
halt = (socket, room) ->
  (sid) ->
    if sid is socket.id
      socket.broadcast.to(room).emit 'halt'

每次套接字连接时,我都会将此侦听器附加到全局发射器。当套接字断开连接时,我想删除监听器。

@io.on 'connection', (socket) ->
  haltFn = halt socket, 'kitchen'
  emitter.on 'halt',  haltFn

  socket.on 'disconnect', ->
    emitter.removeListener 'halt', haltFn

从日志中,我可以看到halt内部的函数被调用了很多次连接已经发生,即使在一些断开连接之后。如何正确删除监听器?

0 个答案:

没有答案