我想开发一个客户端-服务器应用程序的双向流的方式。
哪种技术更适合这个,grpc 还是 websocket?
GRPC 实际上不是比较的相关部分,而是 gRPC 使用 HTTP/2,这当然可以与 WebSocket 进行比较。
Https://www.infoq.com/articles/websocket-and-http2-coexist
这篇文章很好地概述了它们。从本质上讲,HTTP/2是客户机/服务器,后台支持服务器推送,因此您可以发出请求,并简单地停留在该连接上监听更新,而不需要轮询,例如。
虽然 WebSocket 不会因为 HTTP/2而消失,但是对于那些围绕着“让我知道什么时候发生与我刚刚做的事情相关的更新”的用例来说,它们可能并不是必需的。
GRPC 是 HTTP/2之上的 API/Protocol,因此比较 HTTP/2和 Websockets 更有意义。
注意: HTTP/2服务器推送在这里也是与 没有相关的。这是一个针对可缓存(GET)资源的 网站优化技术网站优化技术。
Websocket 和 HTTP/2支持低开销(几个字节)的二进制数据帧,但是 Websocket 的帧(整个有效负载)在发送端是 戴上面具,在接收端是 揭开面具。见 WebSocket 框架中的掩码是什么?。
使用 HTTP/2,您可以在同一个连接上多路复用多个流。当使用 Websocket 时,这需要由应用程序开发人员或库来处理——如果需要的话。
如果您的客户端是一个浏览器,那么 用于低延迟客户端到服务器消息的 HTTP/2或 Websockets的答案可能是相关的。