nodejs-streaming
Installation
SKILL.md
概览
本技能用于把高容量 Node.js 数据路径开发成可证明内存有界、可取消、可重试且生命周期明确的实现。流式 API 只提供分块传输的可能性,不自动保证安全;设计时要同时处理来源、转换、消费者、失败路径和并发预算。
开发流程
- 先定义数据契约。 明确最大字节数、是否需要 seek/重试/多次消费、允许的耗时、并发数、最终 sink 和失败后的清理责任。
- 选择数据路径。 单次顺序消费可直接
pipeline();需要重试或随机访问时先流式写入临时文件或其他可重新打开的 source,再为每次消费创建新 stream。 - 实现背压和限制。 同时做 header 预检与实际字节计数,让 source、transform、sink 的 error/abort 双向传播,不在中间收集完整 payload。
- 实现完整生命周期。 为整个交换设置 deadline;客户端断开、非 2xx、超限、解析失败或 sink 失败时停止生产者、取消未读响应并等待清理。
- 实现重试与并发预算。 每次 attempt 重建 source,重试保持串行;把 high-water mark、SDK 分片队列、解析副本乘以 worker/request 并发,必要时限制并发或拒绝过载。
- 补真实行为测试。 覆盖慢速输入、未知
Content-Length、跨块超限、早返回、重试和并发;内存测试关注arrayBuffers、external、RSS 与请求结束后的回落。