nim_duilib/examples/proto_debuger/websocket_server.h

38 lines
1.1 KiB
C
Raw Normal View History

2022-03-09 00:28:31 +08:00
#pragma once
#include <websocketpp/config/asio_no_tls.hpp>
#include <websocketpp/server.hpp>
#include <iostream>
#include <thread>
#include <map>
#include <mutex>
#include <functional>
typedef websocketpp::server<websocketpp::config::asio> WsServer;
using websocketpp::lib::placeholders::_1;
using websocketpp::lib::placeholders::_2;
using websocketpp::lib::bind;
typedef WsServer::message_ptr message_ptr;
class WebsocketServer {
public:
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);
private:
std::string m_url; // 地址
uint32_t m_port; // url
WsServer *m_server;
std::thread *m_thread;
std::mutex m_mutex;
std::map<uint32_t,websocketpp::connection_hdl> m_clients;
};