#pragma once #include #include "Core/Base/global_include.h" #include "Core/socket/ByteOrder.h" #include #include class WebSocket_Manager { public: explicit WebSocket_Manager(std::string_view path); ~WebSocket_Manager() = default; void remove(const drogon::WebSocketConnectionPtr &conn); void add(const drogon::WebSocketConnectionPtr &conn); void visit(const std::function &func); void push_data(const char *buf, uint64_t len); size_t get_websocket_connect_num(); std::string path; protected: std::mutex mtx; std::unordered_set connections; }; class Ws_Mgr : public Psc::Singleton { public: std::shared_ptr register_ws(std::string_view path); std::shared_ptr get_ws(std::string_view path); std::map> map; };