繁体   English   中英

使用单个HTTP / 2连接进行双向(和对称)通信

[英]Using a single HTTP/2 connection for bidirectional (and symmetric) communication

HTTP / 2引入了一些非常有趣的功能,例如流水线操作,多路复用和服务器推送承诺; 这本身就很棒。 作为回报,我们牺牲了WebSockets。

理论上,HTTP / 2允许以推送承诺的形式在服务器和客户端之间进行双向通信。 服务器甚至可以在被要求之前向客户端发送响应。 再次; 真棒。 这些请求虽然与客户的请求不同。

那么问题就在眼前:
有一种方法,以具有单一的 HTTP / 2连接,其允许服务器和客户端发送(用于二进制的加分)任意消息到彼此,而无需对客户端发送的消息服务器发送的消息定义一个不同的协议?

WebSockets是我正在寻找的一个很好的例子,因为任何一方都可以启动连接,然后两者都可以发送消息。

不破坏HTTP / 2的解决方案将是理想的,但也欢迎协议滥用。
非常感谢你提前。

PS。 本练习的目的是确定是否可以在没有服务器/客户端体系结构的情况下在HTTP / 2之上设计传输协议(如GRPC,Thrift等),但是双方都可以发送和接收消息等功能,例如req / resp,pub / sub,rpc等可以构建在上面。

现在,最接近您想要的是服务器发送的事件。 它应该可以很好地与HTTP / 2一起工作,除了习惯性的IE之外,所有浏览器都支持它,但是有一个polyfill可用(它会占用你的RAM)。 没有某种类型的转义,没有二进制支持,因为换行符用于分隔消息部分和消息本身。

还有一些说明(欢迎更正):

  • Websockets很好用。 如果不是现在,HTTP / 2 Connect在不久的将来应该是可用的。
  • 但是服务器无法启动到客户端的websockets。
  • 推送承诺服务于一个非常不同的目的,不,你不能用它们代替websockets。

HTTP / 2推送称为推送,但它与从服务器推送的通知无关。 通过节省往返次数,这或多或少是减少应用程序加载时间的明智方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM