1 #include <websocketpp/config/asio_no_tls.hpp>
3 #include <websocketpp/server.hpp>
7 typedef websocketpp::server<websocketpp::config::asio> server;
9 using websocketpp::lib::placeholders::_1;
10 using websocketpp::lib::placeholders::_2;
11 using websocketpp::lib::bind;
13 // pull out the type of messages sent by our config
14 typedef server::message_ptr message_ptr;
16 // Define a callback to handle incoming messages
17 void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
18 std::cout << "on_message called with hdl: " << hdl.lock().get()
19 << " and message: " << msg->get_payload()
22 // check for a special command to instruct the server to stop listening so
23 // it can be cleanly exited.
24 if (msg->get_payload() == "stop-listening") {
30 s->send(hdl, msg->get_payload(), msg->get_opcode());
31 } catch (const websocketpp::lib::error_code& e) {
32 std::cout << "Echo failed because: " << e
33 << "(" << e.message() << ")" << std::endl;
38 // Create a server endpoint
42 // Set logging settings
43 echo_server.set_access_channels(websocketpp::log::alevel::all);
44 echo_server.clear_access_channels(websocketpp::log::alevel::frame_payload);
47 echo_server.init_asio();
49 // Register our message handler
50 echo_server.set_message_handler(bind(&on_message,&echo_server,::_1,::_2));
52 // Listen on port 9002
53 echo_server.listen(9002);
55 // Start the server accept loop
56 echo_server.start_accept();
58 // Start the ASIO io_service run loop
60 } catch (websocketpp::exception const & e) {
61 std::cout << e.what() << std::endl;
63 std::cout << "other exception" << std::endl;