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_
|