This commit is contained in:
cxh 2026-01-21 15:00:01 +08:00
parent 2759f86c76
commit 2cdd2d4f4f

View File

@ -1,28 +1,30 @@
#pragma once
#include <atomic>
#include <nlohmann/json.hpp>
#include <string>
#include <thread>
#include <websocketpp/connection.hpp>
#include <websocketpp/client.hpp>
#include <websocketpp/config/asio_no_tls_client.hpp>
namespace websocketpp
{
namespace client
{
}
} // namespace websocketpp
// websocketpp 客户端类型
using ws_client = websocketpp::client<websocketpp::config::asio_client>;
class TunnelClient
{
public:
TunnelClient(const std::string& vid, const std::string& server_ws_url, int local_http_port);
void start();
void stop();
private:
void run_loop();
// 新增:流式处理 & 安全发送
// 处理 Server 的 JSON 请求GET / POST / 大文件流)
void handle_request_and_reply(const nlohmann::json& req);
// 线程安全发送函数
void send_text_safe(const std::string& s);
void send_binary_safe(const void* data, size_t len);
@ -34,7 +36,7 @@ class TunnelClient
std::atomic<bool> running_{false};
std::thread th_;
// websocketpp 句柄
// websocketpp
ws_client* client_ = nullptr;
websocketpp::connection_hdl hdl_;
ws_client* client_ = nullptr; // 指向 run_loop 的 client
};