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


74

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

什么是更适合的技术,例如grpc或websocket?


1
好吧,gRpc适用于双向流传输,gRPC基本上在HTTP / 2上运行,在HTTP / 2上以二进制格式进行数据流传输,从而加快了数据流的速度。我认为grpc比Web套接字在双向数据流方面的性能更好。
巴萨瓦拉吉

1
尽管正在讨论这,但本文并不与此比较直接相关,但有益于阅读。
RC0993

Answers:


87

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

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

本文对它们进行了很好的概述。本质上,HTTP / 2是在后台使用服务器推送的客户端/服务器,因此,例如,您可以发出请求并仅停留在该连接上以侦听更新而无需轮询。

尽管WebSockets不会因为HTTP / 2而消失,但对于以“让我知道何时发生与我所做的事情相关的更新”为中心的用例,可能不需要使用它们。


4
那不仅是一个非常好的文档,还必须阅读!感谢您提供的链接!
maxkoryukov


只是这个答案推动投票的自信语气吗?“ gRPC确实不是比较的相关部分”-为什么不呢?GRPC允许双向通信。“ WebSockets ...可能没有必要”-再次为什么?答案与当前形式的问题所涉及的主题不同。
迈克,

gRPC建立在HTTP / 2之上,因此比较WebSockets和HTTP / 2更合适。本文解释说HTTP / 2可以解决WebSockets通常用来解决的一些用例,但并不能解决所有这些用例。我觉得答案和文章都很清楚。
菲尔·斯特金

13

gRPC是HTTP / 2之上的API /协议,因此比较HTTP / 2和Websocket更有意义。

注:HTTP / 2服务器推送不是与此有关任。这是用于可缓存(GET)资源的网站优化技术

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

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

如果您的客户端是浏览器,则低延迟客户端到服务器消息的HTTP / 2或Websocket答案可能很重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.