http/http2 支持双工?
我们知道nio
支持读写事件,那么http
如果定义特殊的Content Type
,如 dstream
。
那么在服务器接受到该类型的http
请求的时候,可以立即响应数据,如离线存储的聊天记录,并且保持读取客户端的请求,如发送的聊天消息。
客户端也采用nio实现,用来读取和写入聊天数据。那么,是否这样子,http
协议就支持双向数据流
?
如果是,那么,为何没有人使用该模式?如果不是,那么htyp2呢?貌似gRPC就是这么干的。
我们知道nio
支持读写事件,那么http
如果定义特殊的Content Type
,如 dstream
。
那么在服务器接受到该类型的http
请求的时候,可以立即响应数据,如离线存储的聊天记录,并且保持读取客户端的请求,如发送的聊天消息。
客户端也采用nio实现,用来读取和写入聊天数据。那么,是否这样子,http
协议就支持双向数据流
?
如果是,那么,为何没有人使用该模式?如果不是,那么htyp2呢?貌似gRPC就是这么干的。
3 回答2.3k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读
991 阅读
799 阅读
http 是基于 tcp 的,当然是双工。
你应该理解双工的两种模式:半双工(http 1.0/1.1),全双工(http 2.0)。
半双工:同一时间内,链接上只能有一方发送数据,另一方接受数据。
http 1.0 是短连接模式,每个请求都要建立新的 tcp 连接,然后 C 发送,S 响应,断开,下一个请求重复此步骤。
http 1.1 是长连接模式,可以多路复用,建立 tcp 连接,资源1 C 发送,S响应,资源2 C发送 S响应,资源3 C发送 S响应,免去了要为每个资源都建立一次 tcp 的开销。
全双工:同一时间内,两端都可以发送或接受数据
http 2.0 资源1 C发送,不必等待 S响应就可以继续发送 资源2 的请求,可以并发的发送,一边发,一边收。