Websocketpp设置消息处理程序

时间:2016-05-14 22:47:45

标签: c++ websocket

我正在设置这样的on-message处理程序,它可以正常工作。

srv.set_message_handler(&on_message);

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

}

但是,当我创建一个类并将on_message函数放入该类并尝试set_message_handler时,我收到错误。在这种情况下,srv变量是一个类成员。像这样:

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;
};

错误:

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);
                                     ^

我该如何解决这个问题?我希望我的on_message函数位于Server类中。

1 个答案:

答案 0 :(得分:1)

这样做可以解决问题:

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