| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #pragma once
- #include "CommWrapperBase.h"
- #include "ActiveXWrapper.h"
- #include "DllWrapper.h"
- #include "WebSocketSession.h"
- #include <memory>
- #include <set>
- #include <mutex>
- #include <map>
- #include <chrono>
- #include <thread>
- #include <atomic>
- class WebSocketHandler {
- private:
- std::shared_ptr<CommWrapperBase> comm_wrapper_;
- std::set<std::shared_ptr<WebSocketSession>> connected_clients_;
- std::mutex clients_mutex_;
- bool use_dll_;
-
- // 超时检测相关
- std::map<int, std::chrono::steady_clock::time_point> last_activity_time_;
- std::mutex activity_mutex_;
- std::atomic<bool> 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<WebSocketSession> session);
- void RemoveClient(std::shared_ptr<WebSocketSession> session);
-
- // 处理WebSocket消息
- void HandleMessage(std::shared_ptr<WebSocketSession> session, const std::string& message);
-
- // 处理具体的命令
- void HandleInitMonitor(std::shared_ptr<WebSocketSession> session, int port);
- void HandleStopPort(std::shared_ptr<WebSocketSession> session, int port);
- void HandleReadData(std::shared_ptr<WebSocketSession> session, int port, const std::string& data);
- void HandleWriteData(std::shared_ptr<WebSocketSession> session, int port, const std::string& data);
-
- // 发送响应
- void SendResponse(std::shared_ptr<WebSocketSession> 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);
- };
|