Boost::Beast websocket 客户端不发送 Pong 响应

问题描述 投票:0回答:1

我正在开发一个 websocket 客户端,用于监听 Binance 市场数据流以读取报价。为此,我使用 Boost::Beast

websocket
。连接使用 SSL。我的问题是我的客户端由于“pong timeout”而断开连接。

Beast 文档称

websocket
应自动处理控制帧并通过正在进行的读或写操作发送 pong。因为我的 websocket 流正在侦听报价,所以它几乎始终处于永久
async_read
状态 - 因此它要么等待数据,要么读取数据。因此,根据文档,当 ping 到达时,它应该发送 pong。

为了检查客户端是否收到 ping,我覆盖了

control_callback
- 是的,它收到了 ping。我什至尝试使用
async_pong
从控制回调发送乒乓球。此方法的完成处理程序向我报告 pong 发送已成功,但没有任何变化。

为了检查服务器端(Binance)的 pong 收据,我从 Boost::Beast 编译了一个 websocket ssl 异步服务器的示例。我稍微改变了它的代码,这样它就不会回显收到的请求,而是像 Binance 一样使用 statrt 发送带有引号的 json。我在服务器端覆盖

control_callback
以查看乒乓球是否来自我的客户端。他们不是

我的问题是 - 为什么

websocket
不发送乒乓球?

最诚挚的问候, 丹

c++ ssl websocket binance boost-beast
1个回答
0
投票

问题出在公司的防病毒软件上。它以某种方式阻止了 websocket 控制帧。

© www.soinside.com 2019 - 2024. All rights reserved.