2016-05-14 4 views
0

Ich setze den On-Message-Handler wie folgt und es funktioniert.Websocketpp set Meldungshandler

srv.set_message_handler(&on_message); 

// This works  
void on_message(websocketpp::connection_hdl hdl, server::message_ptr msg_ptr) 
{ 

} 

Allerdings, wenn ich eine Klasse und setze die on_message Funktion in dieser Klasse erstellen und versuchen, set_message_handler bekomme ich einen Fehler. Die Variable srv ist in diesem Fall ein Klassenmitglied. Etwas wie folgt aus:

class Server 
{ 
public: 
    typedef websocketpp::server<websocketpp::config::asio> server; 

    void on_message(websocketpp::connection_hdl hdl, 
        server::message_ptr msg_ptr); 
private: 
    server srv; 
}; 

Fehler:

C:\Users\Shiro\ClionProjects\Thesis\source_files\Server.cpp: In constructor 'Server::Server(short unsigned int, const Graph&, const Graph&)': 
C:\Users\Shiro\ClionProjects\Thesis\source_files\Server.cpp:10:37: error: no matching function for call to 'websocketpp::server<websocketpp::config::asio>::set_message_handler(void (Server::*)(Server::connection_handler, Server::message_ptr))' 
    s.set_message_handler(&on_message); 
            ^

Wie kann ich dies funktioniert? Ich möchte meine on_message Funktion innerhalb einer Server Klasse sein.

Antwort

1

es so tun das Problem gelöst:

// using boost::bind 
server.set_message_handler(bind(&on_message, this, ::_1, ::_2));