【问题标题】:TCP stream handling in node.jsnode.js 中的 TCP 流处理
【发布时间】:2014-06-24 10:42:14
【问题描述】:

我有如下代码。它在第一次正常工作。之后我得到一个write after end。我明白问题是什么,但不知何故我不明白如何正确地做到这一点。到目前为止,我尝试取消管道并使用半开放连接。我觉得没有想法,没有例子。

server = require('net').createServer (input) ->
  input
    .pipe(someTransformObjectStream)
    .pipe(foo)
    .pipe(bar)

堆栈跟踪:

events.js:72
    throw er; // Unhandled 'error' event

Error: write after end
  at writeAfterEnd (_stream_writable.js:130:12)
  at someTransformObjectStream.Writable.write (_stream_writable.js:178:5)
  at write (_stream_readable.js:583:24)
  at flow (_stream_readable.js:592:7)
  at Socket.pipeOnReadable (_stream_readable.js:624:5)
  at Socket.EventEmitter.emit (events.js:92:17)
  at emitReadable_ (_stream_readable.js:408:10)
  at emitReadable (_stream_readable.js:404:5)
  at readableAddChunk (_stream_readable.js:165:9)
  at Socket.Readable.push (_stream_rea

【问题讨论】:

  • 你能把错误的堆栈跟踪放在问题中吗?
  • @micnic 希望对您有所帮助。

标签: node.js stream coffeescript


【解决方案1】:

问题是您为新连接重复使用相同的转换,但已经结束。您需要为每个连接创建新的转换

server = require('net').createServer (input) ->
  input
    .pipe(createSomeTransformObjectStream())
    .pipe(createFoo())
    .pipe(createBar())

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 2013-12-14
    • 2014-03-13
    • 1970-01-01
    • 2015-02-26
    • 2014-11-08
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多