提升野兽 websocket 服务器读取错误代码文件结束和操作取消

boost beast websocket server read with error code End of file and Operation cancelled

我正在尝试按照 this boost beast example 中的描述设置一个 websocket 服务器。

一切正常,除了 websocket 流读取抛出意外的系统错误,错误代码为 "End of file" 和 "Operation cancelled"

beast::flat_buffer buffer;
try {
    ws->read(buffer); // ws is in the free store
}
catch(beast::system_error const& se) {
    if(se.code() == websocket::error::closed) {
        LOG_INFO << "ws closed, exiting handing thread..";
        break;
     }
    LOG_WARNING << "exception: " << se.code() << ", " << se.code().message();
}

客户端连接到此服务器后,服务器开始使用

读取来自客户端的传入消息

ws->read(buffer);

有时,一个文件结束 system_error 和许多操作取消系统错误被捕获并打印如下:

WARNING  exception: asio.misc:2, End of file
WARNING  exception: system:125, Operation canceled
WARNING  exception: system:125, Operation canceled
WARNING  exception: system:125, Operation canceled

我在谷歌上搜索了一下,文件结束可能是由于底层 tcp 套接字关闭引起的,但问题是断开连接经常发生,这没有意义。而究竟是什么原因会导致Operation canceled系统错误呢?

原来是网络不好导致的。当我禁用某些 VPN 时,问题就消失了。