我有类似ws://host:port?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjVmMTA2MWFmNjViYzY5MDQ4ZGJmODc1YSIsImlhdCI6MTU5NjU0NTAxNCwiZXhwIjo0NzUyMzA1MDE0fQ.E-WuI5jSow69WZPZtQbVKkNR8TIO1DmYwYLgaqREkfE
的服务器URL,并想将我的websocket客户端连接到该服务器。
这是代码示例。
std::string host_="host";
std::string port_="port";
// tcp::resolver resolver_;
auto const results = resolver_.resolve(host_, port_);
// websocket::stream<tcp::socket> ws_;
ws_.handshake(host_, "/");
ws_.write(net::buffer(std::string(send_data_.dump())));
// Debug
beast::flat_buffer buffer;
ws_.read(buffer);
std::cout << beast::make_printable(buffer.data()) << std::endl;
std::cout << "Data sended!\n";
send_data_.clear(); ```
最佳答案
// websocket::stream<tcp::socket> ws_;
ws_.handshake(host_, "/");
您解析了IP端点,但是从不连接基础套接字:std::string host_="host";
std::string port_="port";
net::io_context io(1);
tcp::resolver resolver_(io);
auto const results = resolver_.resolve(host_, port_);
websocket::stream<tcp::socket> ws_(io);
connect(ws_.next_layer(), results);
ws_.handshake(host_, "?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjVmMTA2MWFmNjViYzY5MDQ4ZGJmODc1YSIsImlhdCI6MTU5NjU0NTAxNCwiZXhwIjo0NzUyMzA1MDE0fQ.E-WuI5jSow69WZPZtQbVKkNR8TIO1DmYwYLgaqREkfE");
ws_.write(net::buffer(std::string(send_data_.dump())));
注意connect
行。当然啦
关于c++ - 如何将websocket客户端连接到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63265318/