sessionOptions.truncatedReads


  • 类型:<string> 'error' 或 'ignore' 之一。
  • 默认: 'error'

控制读取流时如何报告截断读取。流的读取端可能在没有收到 QUIC FIN 的情况下结束,这意味着对端从未标示整个流已经发送完毕,接收到的数据可能不完整。这个选项决定了流的异步迭代器如何报告这一情况:

🌐 Controls how reading a stream reports a truncated read. A stream's read side can end without receiving a QUIC FIN, meaning the peer never signalled that the whole stream had been sent and the data received may be incomplete. This selects how the stream's async iterator reports this:

  • 'error' - 默认情况下。对等方应该总是发送一个 FIN 来明确结束它们的数据,因此任何截断都是错误的。迭代器会返回已到达的数据,然后抛出异常,所以不完整的流永远不会被误认为是完整的。不完整的流要么会抛出携带对等方错误代码的 ERR_QUIC_STREAM_RESET,要么是连接错误,或者在其他情况下抛出 ERR_QUIC_STREAM_ABORTED。
  • 'ignore' - 截断本身会被忽略:只会报告流或连接错误,任何干净的中止/取消或类似操作只是结束流。非零的对端重置、非零的本地停止发送或连接错误仍然会失败,但完全没有错误的截断(空闲超时、优雅关闭,或者只是 stopSending())会干净地结束读取,并包含接收到的数据。这与 stream.closed 一致,后者只在发生错误时才会拒绝。