销毁 NodeJs 流导致客户端断开连接

问题描述

这是我的代码片段,用于转换 TCP 流并写入 Websocket 双工连接。一个单独的模块写入 transform0

stream.pipeline(
    transform0,// Append some text
    duplex,// Websocket duplex
    (err) => {
      if (err) {
        logger.error(`${src} Streaming pipeline error. ${err}`)
      }
    }
  )

  transform0.on('end',() => {
    transform0.destroy()
    logger.info(`${src} Transformation ended.`)
  }).on('error',(err) => {
    transform0.destroy()
    logger.error(`${src} Transformer error. ${err.message}`)
  })

transform0.end() 发生时,流停止。但是,websocket 客户端 (wscat) 断开连接。如果我删除 transform0.destroy() 调用,则客户端不会断开连接。

我不清楚终止流时的最佳做法是什么 - unpipe 后跟一个 destroyunpipedestroy 等等。我主要关心的是是我收到的这个错误(在相关但不同的情况下) - (node) warning: possible EventEmitter memory leak detected. 11 listeners added. 我不知道 11 的计数是如何达到的。我希望避免使用 destroy() 达到计数,但这会导致客户端断开连接。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)