我正在Boost :: Beast库的帮助下编写WebSocket应用程序。我正在使用同步调用(例如websocket::stream::write)将数据写入打开的流。
我想使连接尽可能健壮,因此例如丢弃所有由于丢失连接而无法传递的消息。即使在呼叫之前我已经从PC断开Internet连接,websocket::stream::write
调用似乎仍然成功,只要在此之前我已成功连接到接收WebSocket服务器。它返回“已发送”消息的长度,没有错误代码,但实际上只有在我重新连接到互联网之后(显然),消息才被传递。我认为它被卡在某个较低的层上,因为它还不能被传输,但是boost :: beast无法检测到它。即使我正在使用像野兽这样的高级库,我是否仍可以设置计时器以使传出消息超时?这个websocket::stream::write
可以阻塞直到真正发送消息并且它实际上没有卡在某些传输层缓冲区中吗?恐怕如果未丢弃则将等待消息传递到较低层的缓冲区将被填满,或者如果PC重新连接后将传递大量待处理消息,则网络将变得拥塞。网络。
野兽似乎有某种timeouts,但它们仅用于异步I / O。