如何将websocket客户端连接到服务器?

时间:2020-08-05 12:34:05

标签: c++ boost websocket socket.io boost-asio

我有一个类似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(); ```

1 个答案:

答案 0 :(得分:0)

//    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行。当然可以