#pragma once #include "CommWrapperBase.h" #include "ActiveXWrapper.h" #include "DllWrapper.h" #include "WebSocketSession.h" #include #include #include #include #include #include #include class WebSocketHandler { private: std::shared_ptr comm_wrapper_; std::set> connected_clients_; std::mutex clients_mutex_; bool use_dll_; // 超时检测相关 std::map last_activity_time_; std::mutex activity_mutex_; std::atomic timeout_thread_running_; std::thread timeout_check_thread_; const int TIMEOUT_SECONDS = 30; // 超时检测线程函数 void TimeoutCheckThread(); public: WebSocketHandler(bool use_dll = true); ~WebSocketHandler(); // 初始化 bool Initialize(); // 清理资源 void Cleanup(); // 添加/移除客户端 void AddClient(std::shared_ptr session); void RemoveClient(std::shared_ptr session); // 处理WebSocket消息 void HandleMessage(std::shared_ptr session, const std::string& message); // 处理具体的命令 void HandleInitMonitor(std::shared_ptr session, int port); void HandleStopPort(std::shared_ptr session, int port); void HandleReadData(std::shared_ptr session, int port, const std::string& data); void HandleWriteData(std::shared_ptr session, int port, const std::string& data); // 发送响应 void SendResponse(std::shared_ptr session, const std::string& cmd, bool result, int port = 0); // 广播事件 void BroadcastEvent(const std::string& cmd, int port, const std::string& data = ""); // 处理通信事件 void OnCommEvent(const CommEventData& event_data); // 更新端口活动时间 void UpdatePortActivity(int port); // 更新端口活动时间 void RemovePortActivity(int port); };