websocketpp中心跳函数使用记录
依赖的开源库:WebSocket++ | Zaphoyd Studios
server发送ping
client响应pong
问题: 通过set_ping_handler注册on_ping 函数后,发送一次心跳,却收到两次pong;
分析: 抓包分析客户端确实发送了两次包;
解决: 1、服务端: on_ping()函数中不能添加endpont_.ping()代码,且发送心跳时不能直接调用on_ping()函数,应该确定好目标ws连接后直接调用endpont_.ping(); 后者会自动关联到前面注册的on_ping()函数上;
2、客户端: 收到ping后发送pong(1次),本地在on_ping函数中调用endpoint.pong(msg)(2次);
如下抓包结果,可以确定一次ping对应一次pong:
扩展:
对于client注册的on_pong函数,如果不主动调用就会发现注册没有意义,所以注册后,可使用endpoint.pong()来调用注册的on_pong()函数,这个时候你会发现 [FIN][MASKED]中 有两个websocket了;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)