summaryrefslogtreecommitdiffstats
path: root/Websocket/websocket-server.h
blob: 9f34a2b8ad6b87d0b6eeb92f2e6387eb60919afc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//
// Created by msardara on 28/11/16.
//

#ifndef WEBSOCKETSERVER_HPP
#define WEBSOCKETSERVER_HPP

#include "websocketpp/config/asio_no_tls.hpp"
#include "websocketpp/server.hpp"

typedef websocketpp::server<websocketpp::config::asio> Server;
typedef Server::message_ptr message_ptr;

typedef std::function<void(Server *,
                           websocketpp::connection_hdl,
                           message_ptr,
                           const uint8_t*,
                           std::size_t)> HandlerFunction;


using websocketpp::lib::placeholders::_1;
using websocketpp::lib::placeholders::_2;
using websocketpp::lib::bind;

class WebSocketServer
{
public:
  explicit
  WebSocketServer(unsigned short port);

  void
  setHandler(const HandlerFunction &handler);

  ~WebSocketServer() {};

  void
  start();

private:
  void
  onMessage(Server* s, websocketpp::connection_hdl hdl, message_ptr msg);

  Server server;

  HandlerFunction handler;

  volatile bool m_isRunning;
};


#endif WEBSOCKETSERVER_HPP