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

时间:2017-10-24 07:31:39

标签: rest websocket rpc grpc http2

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

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

2 个答案:

答案 0 :(得分:39)

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

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

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

虽然WebSockets不会因为HTTP / 2而消失,但对于那些以“我刚才所做的事情发生的更新发生时让我知道”的用例而言,它们可能不被认为是必要的。

答案 1 :(得分:11)

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

注意: HTTP / 2服务器推送在这里也不相关。这是website optimization technique用于可缓存(GET)资源。

Websocket和HTTP / 2支持具有低开销(几个字节)的二进制数据帧,但是Websocket中的帧(整个有效负载)在发送方被屏蔽,然后被未屏蔽在接收方。参见What is the mask in a WebSocket frame?

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

如果您的客户端是浏览器,则对HTTP/2 or Websockets for low latency client to server messages的答案可能是相关的。