22 #include <websocketpp/config/asio_no_tls.hpp>
23 #include <websocketpp/server.hpp>
24 #include <websocketpp/extensions/permessage_deflate/enabled.hpp>
35 typedef websocketpp::extensions::permessage_deflate::enabled
39 typedef websocketpp::server<deflate_server_config>
server;
41 using websocketpp::connection_hdl;
42 using websocketpp::lib::placeholders::_1;
43 using websocketpp::lib::placeholders::_2;
44 using websocketpp::lib::bind;
54 m_port = m_global_port;
60 m_connections.insert(hdl);
65 m_connections.erase(hdl);
78 for (
auto it : m_connections)
82 m_server->send(it, payload, len, websocketpp::frame::opcode::binary);
84 catch (websocketpp::exception
const &e)
86 std::cerr << e.what() << std::endl;
90 std::cerr <<
"other exception" << std::endl;
98 for (
auto it : m_connections)
102 m_server->send(it, payload, websocketpp::frame::opcode::text);
104 catch (websocketpp::exception
const &e)
106 std::cerr << e.what() << std::endl;
110 std::cerr <<
"other exception" << std::endl;
118 for (
auto it : m_connections)
119 m_server->close(it, websocketpp::close::status::normal,
"Switched off by user.");
121 m_connections.clear();
127 return m_server->is_listening();
134 m_server.reset(
new server());
136 m_server->init_asio();
137 m_server->set_reuse_addr(
true);
144 m_server->listen(m_port);
145 m_server->start_accept();
149 catch (websocketpp::exception
const &e)
151 std::cerr << e.what() << std::endl;
155 std::cerr <<
"other exception" << std::endl;
161 typedef std::set<connection_hdl, std::owner_less<connection_hdl>> con_list;
163 std::unique_ptr<server> m_server;
164 con_list m_connections;
166 static uint16_t m_global_port;
void on_close(connection_hdl hdl)
void on_open(connection_hdl hdl)
void send_text(const std::string &payload)
void send_binary(void const *payload, size_t len)
websocketpp::server< deflate_server_config > server
permessage_compress extension
websocketpp::extensions::permessage_deflate::enabled< permessage_deflate_config > permessage_deflate_type