grpc和websocket之间有什么区别?哪一个更适合双向流连接?

pra*_*dhu 44 rest rpc websocket http2 grpc

我想以双向流方式开发客户端 - 服务器应用程序.

什么是更合适的技术 - grpc或websocket?

Phi*_*eon 56

gRPC实际上并不是比较的相关部分,而是gRPC使用HTTP/2,它肯定可以与WebSockets进行比较.

https://www.infoq.com/articles/websocket-and-http2-coexist

本文很好地概述了它们.从本质上讲,HTTP/2是在后台运行服务器推送的客户端/服务器,因此您可以发出请求,只需在该连接上继续监听更新,而无需轮询.

虽然WebSockets不会因为HTTP/2而消失,但对于以"让我知道何时更新发生与我刚刚做过的事情有关"的用例来说,它们可能不被认为是必要的.

  • 这不仅仅是一个_非常好的_文档,它是**必须阅读**!感谢您提供的链接! (6认同)
  • “当发生与我刚刚所做的事情相关的更新时让我知道”与 websocket 有什么不同? (4认同)
  • 仅仅是这个答案的自信语气推动了投票吗?“gRPC 并不是真正用于比较的相关部分”——为什么不呢?gRPC **允许双向通信。“WebSockets ...可能不被认为是必要的” - 又是为什么?答案所涉及的主题与问题当前形式所提出的主题不同。 (2认同)

Jon*_*nas 24

gRPC 是 HTTP/2 之上的 API/协议,因此比较 HTTP/2 和 Websockets 更相关。

注意:HTTP/2 服务器推送在这里也不相关。这是一种针对可缓存(GET)资源的网站优化技术

Websocket 和 HTTP/2 支持低开销(几个字节)的二进制数据帧,但是 Websocket 中的帧(整个有效负载)在发送方被屏蔽,然后在接收方取消屏蔽。请参阅WebSocket 帧中的掩码是什么?

使用 HTTP/2,您可以在同一连接上复用多个流。如果需要,这需要由应用程序开发人员或库在使用 Websocket 时处理。

如果您的客户端是浏览器,则对于低延迟客户端到服务器消息的 HTTP/2 或 Websockets的答案可能是相关的。