微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决销毁 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 举报,一经查实,本站将立刻删除。