如何使用boost websocket设置子协议
How to set subprotocol with boost weboscket
我想在 boost websocket 中使用子协议。
比如我有s个websocket服务器地址,ws://127.0.0.1:5005。
现在我想用 ws://127.0.0.1:5005/order 替换它。
"order"是websocket中的子协议,可以在libwebsocket中使用。
我找不到关于 boost 子协议的资源。
handshake
方法将目标(您描述的子协议)作为选项参数。
// Do the websocket handshake in the client role, on the connected stream.
// The implementation only uses the Host parameter to set the HTTP "Host" field,
// it does not perform any DNS lookup. That must be done first, as shown above.
ws.handshake(
"www.example.com", // The Host field
"/order" // The request-target
);
这是在 Boost 中为 Websocket 设置子协议的方法:
如果 Boost 版本 >= 1.7.0,则:Click here for more detail
stream<tcp_stream> ws(ioc);
ws.set_option(stream_base::decorator(
[](request_type& req)
{
// Set the client field on the request
req.set(boost::beast::http::field::sec_websocket_protocol, "protoo");
req.set(boost::beast::http::field::sec_websocket_version, "13");
req.set(boost::beast::http::field::sec_websocket_extensions,
"xxx");
}));
stream<tcp_stream> ws(ioc);
ws.handshake_ex("ws://127.0.0.1:5005", "/",
[](request_type& req)
{
req.insert(boost::beast::http::field::sec_websocket_protocol, "protoo");
req.insert(boost::beast::http::field::sec_websocket_version, "13");
req.insert(boost::beast::http::field::sec_websocket_extensions,
"xxx");
});
我想在 boost websocket 中使用子协议。
比如我有s个websocket服务器地址,ws://127.0.0.1:5005。 现在我想用 ws://127.0.0.1:5005/order 替换它。 "order"是websocket中的子协议,可以在libwebsocket中使用。 我找不到关于 boost 子协议的资源。
handshake
方法将目标(您描述的子协议)作为选项参数。
// Do the websocket handshake in the client role, on the connected stream.
// The implementation only uses the Host parameter to set the HTTP "Host" field,
// it does not perform any DNS lookup. That must be done first, as shown above.
ws.handshake(
"www.example.com", // The Host field
"/order" // The request-target
);
这是在 Boost 中为 Websocket 设置子协议的方法:
如果 Boost 版本 >= 1.7.0,则:Click here for more detail
stream<tcp_stream> ws(ioc);
ws.set_option(stream_base::decorator(
[](request_type& req)
{
// Set the client field on the request
req.set(boost::beast::http::field::sec_websocket_protocol, "protoo");
req.set(boost::beast::http::field::sec_websocket_version, "13");
req.set(boost::beast::http::field::sec_websocket_extensions,
"xxx");
}));
stream<tcp_stream> ws(ioc);
ws.handshake_ex("ws://127.0.0.1:5005", "/",
[](request_type& req)
{
req.insert(boost::beast::http::field::sec_websocket_protocol, "protoo");
req.insert(boost::beast::http::field::sec_websocket_version, "13");
req.insert(boost::beast::http::field::sec_websocket_extensions,
"xxx");
});