![](/img/trans.png)
[英]How to architect a django app that requires bidirectional communication with the client
[英]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)。 没有某种类型的转义,没有二进制支持,因为换行符用于分隔消息部分和消息本身。
还有一些说明(欢迎更正):
HTTP / 2推送称为推送,但它与从服务器推送的通知无关。 通过节省往返次数,这或多或少是减少应用程序加载时间的明智方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.