http/http2 支持双工?

http/http2 支持双工?

我们知道nio支持读写事件,那么http如果定义特殊的Content Type ,如 dstream

那么在服务器接受到该类型的http请求的时候,可以立即响应数据,如离线存储的聊天记录,并且保持读取客户端的请求,如发送的聊天消息。

客户端也采用nio实现,用来读取和写入聊天数据。那么,是否这样子,http协议就支持双向数据流

如果是,那么,为何没有人使用该模式?如果不是,那么htyp2呢?貌似gRPC就是这么干的。

阅读 10.2k
2 个回答

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 的请求,可以并发的发送,一边发,一边收。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进