| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #pragma once
- #include <websocketpp/config/asio_no_tls.hpp>
- #include <websocketpp/server.hpp>
- #include <functional>
- #include <iostream>
- #include <string>
- #include <unordered_map>
- #include <mutex>
- #include <regex>
- #include <json/json.h>
- using namespace std;
- typedef enum MyDirect
- {
- UNKNOWN = 0,
- FS = 1,
- CTI = 2,
- ACD = 3,
- IVR = 4,
- WS = 5
- }Direct;
- class CWebSocketServer
- {
- private:
- typedef websocketpp::server<websocketpp::config::asio> server;
- typedef server::message_ptr message_ptr;
- public:
- CWebSocketServer();
- ~CWebSocketServer();
- bool init(uint16_t port = 9002);
- bool sendMsg(websocketpp::connection_hdl hdl, string msg);
- void run();
- void close(websocketpp::connection_hdl hdl); // 关闭与指定客户端的连接
- void stop();
- typedef function<void(websocketpp::connection_hdl hdl, string msg)> Callback_RecvMsg;
- typedef function<void(websocketpp::connection_hdl hdl)> Callback_Close;
- void setCallbackRecvMsg(Callback_RecvMsg pRecvFun) { this->pRecvFun = pRecvFun; };
- void setCallbackClose(Callback_Close pCloseFun) { this->pCloseFun = pCloseFun; };
- private:
- void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg);
- void on_open(server* s, websocketpp::connection_hdl hdl);
- void on_close(server* s, websocketpp::connection_hdl hdl);
- void on_fail(server* s, websocketpp::connection_hdl hdl);
- private:
- server m_endpoint;
- uint16_t m_port; // 端口
- Callback_RecvMsg pRecvFun; // 接收消息回调函数
- Callback_Close pCloseFun; // 连接断开回调函数
- };
|