最近项目使用 gRPC 来实现 PC 端和手机的双向通讯, 我要把 PC 端的状态持续的发送给手机端 但是遇到一个问题
在 client 端不能及时收到 server 端发送的 stream 的信息, 往往要 client 主动 write 后, client 端才能及时收到相关的信息.
后来查了一下, 找到了类似的问题
https://stackoverflow.com/questions/58299740/how-can-i-receive-data-on-client-side-before-calling-end-on-the-server-side-f
但是这个地方并没有给出解决方案,
去查文档
https://nodejs.org/api/stream.html#stream_class_stream_writable
终于找到了解决方案:
- stream.cork();
- stream.write('some');
- stream.write('data');
- process.nextTick(() => stream.uncork());
当然, 我后来发现, 如果我不调用 cork, 只要在 nextTick 中调用就可以实现 flush 的功能
以上来纪念我 4 月 15 日的半天光影.
来源: http://www.jianshu.com/p/c545b7bdef3b