#ifndef WEBSOCKETCLIENT_H #define WEBSOCKETCLIENT_H //#include //#include //#include //#include //#include //#include //#include //#include //#include //#include // //typedef websocketpp::client client; // //class WebSocketClient { //public: // using message_ptr = websocketpp::config::asio_client::message_type::ptr; // using connection_hdl = websocketpp::connection_hdl; // using OpenHandler = std::function; // using MessageHandler = std::function; // using CloseHandler = std::function; // using FailHandler = std::function; // using PongHandler = std::function; // // WebSocketClient(); // ~WebSocketClient(); // // // 连接到指定的URI // void connect(const std::string& uri); // // // 增加客户端的状态标识 // bool is_busy() const; // void set_busy(bool busy); // // // 发送文本消息 // void send(const std::string& message); // // // 发送二进制数据 // void send_binary(const std::vector& binary_data); // // // 通过队列发送文本消息 // void enqueue_message(const std::string& message); // // // 通过队列发送二进制数据 // void enqueue_binary(const std::vector& binary_data); // // // 处理下一个消息 // void process_next_message(); // void process_next_binary(); // // // 发送文本消息并等待回复 // bool send_and_wait(const std::string& message, int timeout_ms); // // // 发送二进制数据并等待回复 // bool send_binary_and_wait(const std::vector& binary_data, int timeout_ms); // // // 关闭连接 // void close(); // // // 设置各种回调函数 // void set_open_handler(OpenHandler handler); // void set_message_handler(MessageHandler handler); // void set_close_handler(CloseHandler handler); // void set_fail_handler(FailHandler handler); // void set_pong_handler(PongHandler handler); // // // 设置心跳间隔(单位:秒) // void set_heartbeat_interval(int interval); // // // 获取当前连接的URL // std::string get_current_url(); // // // 检查当前连接是否仍然有效 // bool is_connected() const; // //private: // // WebSocket 运行函数 // void run(); // // // 心跳检查函数 // void heartbeat(); // // // 回调函数触发器 // void on_open(websocketpp::connection_hdl hdl); // void on_message(connection_hdl hdl, message_ptr msg); // void on_close(websocketpp::connection_hdl hdl); // void on_fail(websocketpp::connection_hdl hdl); // void on_pong(websocketpp::connection_hdl hdl, const std::string& payload); // //private: // // WebSocket客户端实例 // client m_client; // // // WebSocket 连接句柄 // connection_hdl m_hdl; // // // 线程相关 // std::thread m_thread; // std::thread m_heartbeat_thread; // std::atomic m_connected; // std::atomic m_reconnect; // int m_heartbeat_interval; // bool m_message_received; // // // 发送队列 // std::queue m_message_queue; // std::queue> m_binary_queue; // // // 标识客户端是否忙碌 // std::atomic m_busy; // // // 线程同步相关 // bool m_close_done; // std::condition_variable m_cv; // // // 互斥锁,用于保护共享资源 // std::mutex m_mutex; // // // 回调函数 // OpenHandler m_open_handler; // MessageHandler m_message_handler; // CloseHandler m_close_handler; // FailHandler m_fail_handler; // PongHandler m_pong_handler; //}; #endif // WEBSOCKETCLIENT_H