js读取http chunk流_极简 Node.js入门 教程双工流

f74e369458c0394a8ad15bcebfba54e9.png

点击上方蓝字关注我们

小编提示: 本文是由 ICBU 的谦行小哥哥出品,我们会持续发出极简 Node.js入门 教程,敬请期待哦,文中有比较多的演示代码建议横屏阅读

双工流就是同时实现了 Readable 和 Writable 的流,即可以作为上游生产数据,又可以作为下游消费数据,这样可以处于数据流动管道的中间部分,即

rs.pipe(rws1).pipe(rws2).pipe(rws3).pipe(ws);

在 NodeJS 中双工流常用的有两种

  1. Duplex

  2. Transform

8524e8851024228603bffe3e7412f03b.png

实现Duplex

和 Readable、Writable 实现方法类似,实现 Duplex 流非常简单,但 Duplex 同时实现了 Readable 和 Writable, NodeJS 不支持多继承,所以我们需要继承 Duplex 类

  1. 继承 Duplex 类

  2. 实现 _read() 方法

  3. 实现 _write() 方法

相信看过前面章节后对 read()、write() 方法的实现不会陌生,和 Readable、Writable 完全一样

const Duplex = require('stream').Duplex;const myDuplex = new Duplex({
      read(size) {
        // ...  },  write(chunk, encoding, callback) {
        // ...  }});

构造函数参数

Duplex 实例内同时包含可读流和可写流,在实例化 Duplex 类的时候可以传递几个参数

  • readableObjectMode : 可读流是否设置为 ObjectMode,默认 false

  • writableObjectMode : 可写流是否设置为 ObjectMode,默认 false

  • allowHalfOpen : 默认 true, 设置成 false 的话,当写入端结束的时,流会自动的结束读取端

小例子

了解了 Readable 和 Writable 之后看 Duplex 非常简单,直接用一个官网的例子

const Duplex = require('stream').Duplex;const kSource = Symbol('source');class MyDuplex extends Duplex 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值