使用websocketpp编写websocket的服务端程序

       webscoketpp是一个基于boost库的websocket实现,实现的相对完善一些。主页地址:http://www.zaphoyd.com/websocketpp。

       因为做项目需要用到,所以简单做了下分析,下面是关于如何编写server的介绍:

       1. 自定义一个server_handler类,继承自websocketpp::server::handler(简称ws_hander);

             1. ws_handler是在endpoint_tarits中定义的一个类

1                  class handler: public role_type::handler_interface,
2                  public socket_type::handler_interface

                其中虚函数有:

 1                 virtual void validate(connection_ptr con) {}
 2 
 3                 virtual void on_open(connection_ptr con) {}
 4 
 5                 virtual void on_close(connection_ptr con) {}
 6 
 7                 virtual void on_fail(connection_ptr con) {}
 8 
 9                 virtual void on_message(connection_ptr con,message::data_ptr) {}
10 
11                 virtual bool on_ping(connection_ptr con,std::string) {return true;}
12 
13                 virtual void on_pong(connection_ptr con,std::string) {}
14 
15                 virtual void on_pong_timeout(connection_ptr con,std::string) {}
16 
17                 virtual void http(connection_ptr con) {}

 

             可以在server_handler中重写这些函数,处理相应的逻辑。

       2. hander_ptr = new server_hander();

       3. 声明一个websocketpp::server的对象test_server,以handler_ptr为参数;

              1. websocketpp::server 是endpoint的重定义

              2. 开放接口有:

 1    handler_ptr get_handler();
 2      void set_handler(handler_ptr new_handler);
 3      size_t get_threshold();
 4      void set_threshold();
 5      void close_all(close::status::value code = close::status::GOING_AWAY, const std::string& reason = "");
 6      void stop(bool clean = true, close::status::value code = close::status::GOING_AWAY, const std::string& reason = "");

                继承自role::server的:

1                     void listen(uint16_t port, size_t n = 1);
2 
3                     void listen(const boost::asio::ip::tcp::endpoint& e, size_t num_threads = 1);
4 
5                     void listen(const std::string &host, const std::string &service, size_t n = 1);
6 
7                     void listen(const InternetProtocol &internet_protocol, uint16_t port, size_t n = 1);

       4. 启动监听: test_server.listen(port_n);

转载于:https://www.cnblogs.com/sherwin-security/archive/2012/04/11/2443167.html

你可能感兴趣的:(使用websocketpp编写websocket的服务端程序)