Как подключить клиент websocket к серверу? - PullRequest
1 голос
/ 05 августа 2020

У меня есть URL-адрес сервера, подобный этому ws://host:port?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjVmMTA2MWFmNjViYzY5MDQ4ZGJmODc1YSIsImlhdCI6MTU5NjU0NTAxNCwiZXhwIjo0NzUyMzA1MDE0fQ.E-WuI5jSow69WZPZtQbVKkNR8TIO1DmYwYLgaqREkfE, и я хочу подключить свой websocket cl inet к этому серверу.

Вот пример кода.

    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 голосов
/ 07 августа 2020
//    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. Конечно ты

...