我从here和here复制了简单的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握手上。
我做错了什么或者这是一个提升中的错误?
答案 0 :(得分:1)
如果您要自己阅读WebSocket升级请求,那么为了接受升级请求,您需要使用websocket::stream::accept
或websocket::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