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

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):