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

标签 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(); ```

最佳答案

//    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/

相关文章:

c++ - 求 {E1,..En} (E1+E2+..En​​=N, N is given) 具有以下性质 E1* E2*..En 是最大值

c++ - 编译时增加几何距离()错误

c++ - Boost 插件选择

docker - 使用istio envoy代理运行的容器的最大Websocket连接数

c++ - 在单链表C++中实现复制构造函数

c++ - 将 time_t 转换为 double 并返回

c++ - 找到flann矩阵类型中出现频率最高的元素

C++ 编译陷入 boost interprocess lib 'error: `::ftruncate' 尚未声明'

javascript - 防止 MySQL 行一次更新两次? (nodejs mysql)

c++ - Boost膨胀算法解压缩