Boost websocket接受挂起

时间:2018-04-10 14:17:33

标签: c++ boost websocket

我从herehere复制了简单的boost websocket示例,并且运行正常。然后我在调用之前将这些行添加到服务器以创建websocket:

boost::beast::flat_buffer buffer;
boost::beast::http::request<boost::beast::http::string_body> req;
boost::beast::http::read(sock, buffer, req);

在升级到websocket之前,从this page获取这些行以读取消息的内容。服务器和客户端现在都挂在websocket握手上。

我做错了什么或者这是一个提升中的错误?

1 个答案:

答案 0 :(得分:1)

如果您要自己阅读WebSocket升级请求,那么为了接受升级请求,您需要使用websocket::stream::acceptwebsocket::stream::async_accept的正确重载。使用在第一个参数中接受HTTP请求的重载: https://www.boost.org/doc/libs/1_66_0/libs/beast/doc/html/beast/ref/boost__beast__websocket__stream/accept/overload6.html https://www.boost.org/doc/libs/1_66_0/libs/beast/doc/html/beast/ref/boost__beast__websocket__stream/async_accept/overload3.html