大多数Http客户端架构是半双工的协议模型,并没有利用TCP的全双工功能,有全异步Http的架构吗

【大多数Http客户端架构是半双工的协议模型,并没有利用TCP的全双工功能,有全异步Http的架构吗】 HTTP2 了解一下?

■网友
request/response模式是为了简化设计,保证请求处理的有序可控。如果允许不等待响应就发送下个请求则可能存在上个请求处理失败,后续请求无法执行这样的问题。
当然HTTP 1.1还是有一个pipeline模式允许客户端连续提交请求而不等待响应,不过限制比较多,没什么人用。
HTTP2则实现了请求的多路复用,允许多个请求和响应包在一个TCP连接里交错传输,相比pineline模式更加完备和高效,用HTTP2是可以实现你想要的功能的。

■网友
你的问题跟Http实现的全双工/半双工关系不大,你只需要“发请求,但不等待响应”的语义,可以开一个发送线程来实现,或者使用异步模式的库:

HINTERNET WINAPI WinHttpOpen( _In_opt_ LPCWSTR pwszUserAgent, _In_ DWORD dwAccessType, _In_ LPCWSTR pwszProxyName, _In_ LPCWSTR pwszProxyBypass, _In_ DWORD dwFlags);WINHTTP_FLAG_ASYNCUse the WinHTTP functions asynchronously. By default, all WinHTTP functions that use the returned HINTERNET handle are performed synchronously. When this flag is set, the caller needs to specify a callback function through WinHttpSetStatusCallback.

■网友
没错,有。WebSocket。
WebSocket 是什么原理?为什么可以实现持久连接? - Ovear的回答 - 最近准备着手我的个人博客,正好想做成你所说这种全异步http的架构,用iframe浏览页面,在顶层维护一个socket连接,数据全走这里,完全脱离了服务器渲染,用户的浏览路径用锚点链接模拟一个,不然url不会改变,再尝试一下可能后期做成无后台的,用用模板引。


    推荐阅读