linux版本中间件

WebSocketServer.h 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #pragma once
  2. #include <websocketpp/config/asio_no_tls.hpp>
  3. #include <websocketpp/server.hpp>
  4. #include <functional>
  5. #include <iostream>
  6. #include <string>
  7. #include <unordered_map>
  8. #include <mutex>
  9. #include <regex>
  10. #include <json/json.h>
  11. using namespace std;
  12. typedef enum MyDirect
  13. {
  14. UNKNOWN = 0,
  15. FS = 1,
  16. CTI = 2,
  17. ACD = 3,
  18. IVR = 4,
  19. WS = 5
  20. }Direct;
  21. class CWebSocketServer
  22. {
  23. private:
  24. typedef websocketpp::server<websocketpp::config::asio> server;
  25. typedef server::message_ptr message_ptr;
  26. public:
  27. CWebSocketServer();
  28. ~CWebSocketServer();
  29. bool init(uint16_t port = 9002);
  30. bool sendMsg(websocketpp::connection_hdl hdl, string msg);
  31. void run();
  32. void close(websocketpp::connection_hdl hdl); // 关闭与指定客户端的连接
  33. void stop();
  34. typedef function<void(websocketpp::connection_hdl hdl, string msg)> Callback_RecvMsg;
  35. typedef function<void(websocketpp::connection_hdl hdl)> Callback_Close;
  36. void setCallbackRecvMsg(Callback_RecvMsg pRecvFun) { this->pRecvFun = pRecvFun; };
  37. void setCallbackClose(Callback_Close pCloseFun) { this->pCloseFun = pCloseFun; };
  38. private:
  39. void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg);
  40. void on_open(server* s, websocketpp::connection_hdl hdl);
  41. void on_close(server* s, websocketpp::connection_hdl hdl);
  42. void on_fail(server* s, websocketpp::connection_hdl hdl);
  43. private:
  44. server m_endpoint;
  45. uint16_t m_port; // 端口
  46. Callback_RecvMsg pRecvFun; // 接收消息回调函数
  47. Callback_Close pCloseFun; // 连接断开回调函数
  48. };