首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

node中的Stream-Readable和Writeable解读

ReadableReadable对应于Java中的InputStream和Reader两个类,针对Readable设置encode编码可完成内部数据由Buffer到字符的转换。...事件 readable.pause() readable.unpipe() 可能这样讲解大家仍不明白Readable Stream这两种模式的区别,那么下文从更深层次分析两种模式的机制。...深入Readable的实现 Readable继承EventEmitter,大家也都知道。但是相信大家应该不怎么熟悉Readable的实例属性**_readableState**。...这意味着,针对Readable Stream执行read(0)方法会触发readable事件,但是不会读当前缓冲区。...针对这个私有方法_read,文档上有特殊说明,自定义的Readable实现类需要实现这个方法,在该方法中手动添加数据到Readable对象的读缓冲区,然后进行Readable的读取。

1.1K90
您找到你想要的搜索结果了吗?
是的
没有找到

Readable Stream(可读流)3. Writable Stream(可写流)4. 流模式(objectMode )5. 缓冲(highWa

Readable Stream(可读流) 创建可读流时,需要继承Readable,并实现_read方法。 ① _read方法是从底层系统读取具体数据的逻辑,即生产数据的逻辑。...它抽象了在可读流实现(Readable stream implementation)内部发生的复杂的状态管理过程。 在任意时刻,任意可读流应确切处于下面三种状态之一: readable...._readableState.flowing = null readable._readableState.flowing = false readable....在这个状态下,监听 'data' 事件,调用 readable.pipe() 方法,或者调用 readable.resume() 方法, readable....调用 readable.pause() 方法, readable.unpipe() 方法, 或者接收 “背压”(back pressure), 将导致 readable.

1.4K20

Node中的流

所有stream都是EventEmitter实例,通过事件机制来读写数据,例如上面提到的pipe()方法相当于: // readable.pipe(writable)readable.on('data'...Readable.pause(),进入Paused模式 Writable再干一会儿压力不大了的时候,会触发drain事件,此时pipe调用Readable.resume()进入Flowing模式,让Readable...建议在此时对上游限流,即调用Readable.pause()先给停了,给下游多点时间处理堆积的数据,下游觉得轻松了会触发darin事件,表示此时有能力处理更多数据了,所以这时候应该开闸放水(Readable.resume...同样,Readable触及highWaterMark的标志是push()返回false,说明Readable的buffer不那么十分空了,此时如果还持续push(),没错,也会出现BackPressure...(Readable消费能力限制了从数据源到Readable的传输速度): 快-------------慢 数据源-------->Readable------->Writable

2.2K10

Redis 单线程模型 精讲

命令请求处理器 命令回复处理器 连接应答处理器 时间处理器(做定时用) I/O多路复用的实现 文件事件处理器 连接应答处理器 当Redis初始化时,程序会将连接应答处理器与服务端监听套接字的AE_READABLE...事件关联起来,当有客户端通过socket连接服务端时,套接字就会产生AE_READABLE事件,引发连接应答处理器执行,并执行相应的套接字应答操作。...命令请求处理器 当一个客户端通第一步通过socket与服务端连接成功后,服务端将会把该socket的AE_READABLE事件和命令请求处理器关联起来,当客户端向服务端发起命令请求时,如 get xxx...,set xxx,套接字就会产生AE_READABLE事件,关联的命令请求处理器就会被执行 命令回复处理器 当服务端需要给客户端响应时,服务端会将客户端套接字的AE_WRITABLE事件和命令回复处理器关联...完整的客户端与服务端交互流程 1.server初始化后,在serversocket上注册AE_READABLE事件,并与连接应答处理器关联 2.客户端请求与服务端建立连接,server收到AE_READABLE

43520
领券