我正在实现一个系统,其中多个客户端使用gRpc与服务器通信。 该服务使用golang编写,客户端使用C语言编写。
我正在尝试研究如何最好地处理从服务器到客户端的通信。
我到目前为止考虑的选项是:
我也不完全相信在C中实现上述每一项所需的工作,因为C中似乎没有包含很多辅助功能
所以我使用go客户端+服务器实现了一个解决方案。利用双向rpc流,
这是保持连接客户端连接的合理方法吗?
答案 0 :(得分:0)
关于您的选择:
我不知道你的用例,但通常你不能要求或保证用户可以打开侦听器。正常的方式是客户端连接到服务器并保持通道打开。
gRPC
可用作流接收服务器端事件 (SSE)。所以这可能是一个不错的选择。
https://docs.servicestack.net/server-events-grpc#streamserverevents
这是保持连接对连接的客户端开放的合理方法吗?
我看不出这种方法有什么问题。
直到现在,我知道除了 WebSocket 之外,没有更好的解决方案通过 http 协议来通信事件。它很容易实现,有一个基于事件的成熟API,支持文本和二进制数据。从开发的角度来看,您只需要担心 ws
或 wss
协议的特定反向代理规则。