【发布时间】:2016-03-05 17:55:47
【问题描述】:
HTTP/2 引入了一些非常有趣的特性,例如流水线、多路复用和服务器推送承诺;这本身就很棒。 作为回报,我们牺牲了 WebSockets。
理论上 HTTP/2 允许服务器和客户端之间以推送承诺的形式进行双向通信。服务器甚至可以在被请求之前向客户端发送响应。再次;惊人的。 这些请求与客户的请求不同。
所以手头的问题:
有没有一种方法可以拥有一个单一 HTTP/2 连接,允许服务器和客户端相互发送任意消息(二进制消息的额外点),而无需为 定义不同的协议客户端发送消息和服务器发送消息?
WebSockets 是我正在寻找的一个很好的例子,因为任何一方都可以启动连接,然后双方都可以发送消息。
不破坏 HTTP/2 的解决方案是理想的,但也欢迎滥用协议。
非常感谢您。
ps。本练习的目的是确定是否可以在 HTTP/2 之上设计 GRPC、Thrift 等传输协议,而无需服务器/客户端架构,但双方都可以发送和接收消息,因此诸如 req 之类的功能/resp、pub/sub、rpc 等可以在其之上构建。
【问题讨论】:
-
grpc 默认使用 http2。 grpc.io/docs/guides/wire.html
-
@nibin012 afaik 服务器无法发起 gRPC 请求-回复交换,只有客户端可以,不是吗?
标签: architecture network-protocols http2