我想以双向流方式开发客户端-服务器应用程序。
什么是更适合的技术,例如grpc或websocket?
Answers:
gRPC实际上不是比较的相关部分,而是gRPC使用HTTP / 2,可以肯定地将其与WebSockets进行比较。
https://www.infoq.com/articles/websocket-and-http2-coexist
本文对它们进行了很好的概述。本质上,HTTP / 2是在后台使用服务器推送的客户端/服务器,因此,例如,您可以发出请求并仅停留在该连接上以侦听更新而无需轮询。
尽管WebSockets不会因为HTTP / 2而消失,但对于以“让我知道何时发生与我所做的事情相关的更新”为中心的用例,可能不需要使用它们。
gRPC是HTTP / 2之上的API /协议,因此比较HTTP / 2和Websocket更有意义。
注:HTTP / 2服务器推送是不是与此有关任。这是用于可缓存(GET)资源的网站优化技术。
Websocket和HTTP / 2支持具有低开销(几个字节)的二进制数据帧,但是Websocket中的帧(整个有效负载)在发送方被屏蔽,然后在接收方被屏蔽。请参阅WebSocket框架中的遮罩是什么?。
使用HTTP / 2,您可以在同一连接上多路复用多个流。使用Websocket时,需要由应用程序开发人员或库来处理-如果需要的话。
如果您的客户端是浏览器,则低延迟客户端到服务器消息的HTTP / 2或Websocket答案可能很重要。