我想以双向流方式开发客户端 - 服务器应用程序。
什么是更合适的技术 - grpc或websocket?
答案 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的答案可能是相关的。