#pragma once #include #include #include #include namespace websocketpp { namespace client { } } // namespace websocketpp 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(); // 新增:流式处理 & 安全发送 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); private: std::string vid_; std::string ws_url_; int local_port_ = 0; std::atomic running_{false}; std::thread th_; // websocketpp 句柄 websocketpp::connection_hdl hdl_; ws_client* client_ = nullptr; // 指向 run_loop 的 client };