websocketpp |无法设置 on_close/打开处理程序

Posted

技术标签:

【中文标题】websocketpp |无法设置 on_close/打开处理程序【英文标题】:websocketpp | Can't set on_close/ open handler 【发布时间】:2019-10-06 12:22:34 【问题描述】:

当我尝试设置 set_close_handler 时,我遇到了这个异常:

rm -rf build/*.o main command_prompt
rm -rf *.o main command_prompt
g++ -o build//main.o -std=c++11 -DRASPBERRY_PI -DBCM2835_NO_DELAY_COMPATIBILITY -D__BASEFILE__=\"build/main\" -c -Ilibs/lmic/src -Ilibs/  main.cpp
main.cpp: In function ‘void on_close(websocketpp::connection_hdl)’:
main.cpp:75:3: error: ‘m_connections’ was not declared in this scope
   m_connections.erase(hdl);
   ^~~~~~~~~~~~~
main.cpp: In function ‘int main()’:
main.cpp:226:70: error: expected primary-expression before ‘)’ token
       echo_server.set_close_handler(bind(&on_close,&echo_server,::_1,));
                                                                      ^
Makefile:29: recipe for target 'build/main.o' failed
make: *** [build/main.o] Error 1
rebuild.sh: line 3: ./main: No such file or directory

我已经尝试在 on_close 事件中使用参数和客户端指针,但这并没有改变任何事情。 我已经成功设置了 on 消息处理程序,但是当我尝试设置 on open 处理程序时,它会抛出相同的异常。

void on_close(websocketpp::connection_hdl hdl)



echo_server.set_close_handler(bind(&on_close,&echo_server,::_1,));

【问题讨论】:

【参考方案1】:

包含这一行应该可以解决您的问题:

using websocketpp::lib::placeholders::_1;

【讨论】:

【参考方案2】:
echo_server.set_close_handler(bind(&on_close,&echo_server,::_1, ));
                                                               ^
                                            missing an argument here                    

【讨论】:

哎呀,抱歉在发布前忘记删除它,这不是异常的原因。

以上是关于websocketpp |无法设置 on_close/打开处理程序的主要内容,如果未能解决你的问题,请参考以下文章

MtGox API 和 websocketpp

未设置 set_tls_init_handler 时 websocketpp 如何处理连接?

如何在 websocketpp 中使用自定义记录器?

从 websocketpp 中的 connection 或 connection_ptr 获取本机套接字描述符?

websocketpp 和 boost.asio 有啥区别?

Qt写websocketpp服务端