47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef HV_WEBSOCKET_SERVER_H_
 | 
						|
#define HV_WEBSOCKET_SERVER_H_
 | 
						|
 | 
						|
/*
 | 
						|
 * @demo examples/websocket_server_test.cpp
 | 
						|
 */
 | 
						|
 | 
						|
#include "HttpServer.h"
 | 
						|
#include "WebSocketChannel.h"
 | 
						|
 | 
						|
#define websocket_server_t      http_server_t
 | 
						|
#define websocket_server_run    http_server_run
 | 
						|
#define websocket_server_stop   http_server_stop
 | 
						|
 | 
						|
namespace hv {
 | 
						|
 | 
						|
struct WebSocketService {
 | 
						|
    std::function<void(const WebSocketChannelPtr&, const HttpRequestPtr&)>  onopen;
 | 
						|
    std::function<void(const WebSocketChannelPtr&, const std::string&)>     onmessage;
 | 
						|
    std::function<void(const WebSocketChannelPtr&)>                         onclose;
 | 
						|
    int ping_interval;
 | 
						|
 | 
						|
    WebSocketService() : ping_interval(0) {}
 | 
						|
 | 
						|
    void setPingInterval(int ms) {
 | 
						|
        ping_interval = ms;
 | 
						|
    }
 | 
						|
};
 | 
						|
 | 
						|
class WebSocketServer : public HttpServer {
 | 
						|
public:
 | 
						|
    WebSocketServer(WebSocketService* service = NULL)
 | 
						|
        : HttpServer()
 | 
						|
    {
 | 
						|
        this->ws = service;
 | 
						|
    }
 | 
						|
    ~WebSocketServer() { stop(); }
 | 
						|
 | 
						|
    void registerWebSocketService(WebSocketService* service) {
 | 
						|
        this->ws = service;
 | 
						|
    }
 | 
						|
};
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
#endif // HV_WEBSOCKET_SERVER_H_
 |