Boost.Beast 高级服务器示例中的 HTTP Pipelining vs. WebSocket
Posted
技术标签:
【中文标题】Boost.Beast 高级服务器示例中的 HTTP Pipelining vs. WebSocket【英文标题】:HTTP Pipelining vs. WebSocket in Boost.Beast advanced server example 【发布时间】:2018-02-05 12:57:14 【问题描述】:我对这个 Boost.Beast 示例有疑问:
https://github.com/boostorg/beast/blob/908f84cb3c023ed7c5bd19e2e5283d3218a6d820/example/advanced/server/advanced_server.cpp
在第 643 行,WebSocket 升级完成。但是,如果我理解正确的话,队列中可能仍然有异步执行的 HTTP 写入命令。因此,它们与当前的 WebSocket 通信并行执行。那合法吗?还是我还没有完全理解这个例子?
【问题讨论】:
【参考方案1】:在已经发送 101 Switching Protocols 响应之后再发送 HTTP 响应是不合法的。但这不可能发生,因为一旦服务器收到升级 HTTP 请求,它将遵循升级过程。发送升级请求后发送另一个正常 HTTP 请求的客户端将出错。
【讨论】:
以上是关于Boost.Beast 高级服务器示例中的 HTTP Pipelining vs. WebSocket的主要内容,如果未能解决你的问题,请参考以下文章
Boost :: Beast Websocket双向流(C ++)
如何使用 boost beast websocket 客户端收听 websocket 提要?