HTTP/2引入了一些很有趣的功能,如流水线处理、多路复用和服务器推送承诺,它们本身非常棒。 然而,我们放弃了WebSockets。
理论上,HTTP/2允许服务器和客户端之间以推送承诺的形式进行双向通信。服务器可以在被请求之前向客户端发送响应。同样,这也很棒。 然而,这些请求与客户端的请求不同。
所以问题来了:
有没有一种方法,可以使用单个HTTP/2连接,让服务器和客户端彼此发送任意消息(二进制消息额外加分),而无需为客户端发送的消息和服务器发送的消息定义不同的协议?
WebSockets是我寻找的一个很好的例子,因为任何一方都可以启动连接,然后两个都可以发送消息。
最好的解决方案是不破坏HTTP/2的情况下实现,但协议滥用也是可以接受的。
非常感谢您的帮助。
ps. 这个练习的目的是弄清楚是否可以在HTTP/2的基础上设计像GRPC、Thrift等传输协议,而不需要服务器/客户端架构,但双方都能发送和接收消息,以便构建如请求/响应、发布/订阅、RPC等功能。