Echo Server

Echo server

Here is an exmaple of the echo back websocket server:

// Defined to use C++11 features
#define _WEBSOCKETPP_CPP11_STL_
 
#include <iostream>
 
#include <websocketpp/config/asio_no_tls.hpp>
#include <websocketpp/server.hpp>
 
int main() {
    using server = websocketpp::server<websocketpp::config::asio>;
 
    std::uint16_t const port = 12345;
 
    server echo;
 
    // disable log output
    echo.clear_access_channels(websocketpp::log::alevel::all);
 
    boost::asio::io_service ios;
    echo.init_asio(&ios);
 
    // For reuse the same port no immediately
    echo.set_reuse_addr(true);
 
    echo.set_message_handler(
        [&echo](websocketpp::connection_hdl hdl,
            server::message_ptr msg){
            auto const& str = msg->get_payload();
 
            // print payload
            std::cout << str << std::endl;
 
            // Remove a listen event handler
            if (str == "stop listening") echo.stop_listening();
 
            // echo back payload
            echo.send(hdl, str, msg->get_opcode());
        });
 
    // Register a listen event handler
    echo.listen(port);
    echo.start_accept();
 
    // Start event handlers
    ios.run();
}

This program echoes back the payload received from clients. When the server receives "stop listening", no more new connection is accepted. After "stop listening" received, and all clients' connections are closed by clients, the program finish gracefully. ios.run() is unblocked automatically.

Compile

g++ -std=c++1y echo_server.cpp -o echo_server -lboost_system