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

你可能感兴趣的:(使用gRPC的stream向客户端实时传送信息的坑)