HTTP / 2引入了一些非常有趣的功能,例如流水线操作,多路复用和服务器推送承诺;这本身就很棒。 作为回报,我们牺牲了WebSockets。
理论上,HTTP / 2允许以推送承诺的形式在服务器和客户端之间进行双向通信。服务器甚至可以在被要求之前向客户端发送响应。再次;真棒。 这些请求与客户的请求不同。
所以手头的问题:
有没有办法建立一个单 HTTP / 2连接,允许服务器和客户端相互发送任意消息(二进制消息的额外点),而无需为定义不同的协议客户端发送消息和服务器发送消息?
WebSockets是我正在寻找的一个很好的例子,因为任何一方都可以发起连接,然后两者都可以发送消息。
不破坏HTTP / 2的解决方案将是理想的,但也欢迎协议滥用 提前非常感谢。
PS。本练习的目的是确定是否可以在没有服务器/客户端体系结构的情况下在HTTP / 2之上设计传输协议(如GRPC,Thrift等),但是双方都可以发送和接收消息等功能,例如req / resp,pub / sub,rpc等可以构建在。
之上答案 0 :(得分:5)
现在最接近您想要的是服务器发送的事件。它应该可以很好地与HTTP / 2一起工作,除了习惯性的IE之外,所有浏览器都支持它,但是有一个polyfill可用(它会占用你的RAM)。没有某种类型的转义,没有二进制支持,因为换行符用于分隔消息部分和消息本身。
还有一些说明(欢迎更正):
HTTP / 2推送称为推送,但它与从服务器推送的通知无关。通过节省往返次数,这或多或少是一种减少应用程序加载时间的合理方法。