#pragma once #include #include #include #include #include #include #include typedef websocketpp::server WsServer; using websocketpp::lib::placeholders::_1; using websocketpp::lib::placeholders::_2; using websocketpp::lib::bind; typedef WsServer::message_ptr message_ptr; class WebsocketServer { public: typedef std::function OnNewConnectionHanlder; typedef std::function OnConnectionCloseHanlder; typedef std::function OnMessageHanlder; std::string Url(); uint32_t Port(); WebsocketServer(std::string server,uint32_t port); friend void on_new_connection(WebsocketServer* s, websocketpp::connection_hdl hdl); friend void on_message(WebsocketServer* s, websocketpp::connection_hdl hdl, message_ptr msg); friend void on_connection_close(WebsocketServer* s, websocketpp::connection_hdl hdl); int SendData(uint32_t,const char *data,int len,websocketpp::frame::opcode::value); int SendDataAllClient(const char *data,int len,websocketpp::frame::opcode::value); void SetOnNewConnectionHanlder(OnNewConnectionHanlder); void SetOnConnectionCloseHanlder(OnConnectionCloseHanlder); void SetOnMessageHanlder(OnMessageHanlder); private: std::string m_url; // 地址 uint32_t m_port; // url WsServer *m_server; std::thread *m_thread; std::mutex m_mutex; OnNewConnectionHanlder m_on_connection; OnConnectionCloseHanlder m_on_close; OnMessageHanlder m_on_message; std::map m_clients; };