使用gRPC的stream向客户端实时传送信息的坑

最近项目使用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日的半天光影。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容