3

我正在尝试按照此 boost beast 示例中的描述设置 websocket 服务器。

一切正常,除了读取的 websocket 流引发意外的系统错误,错误代码为“文件结束”和“操作已取消”

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->读取(缓冲区);

有时,会捕获并打印一个 End of file 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 套接字关闭引起的,但问题是断开连接经常发生,这没有意义。究竟什么会导致操作取消系统错误?

4

1 回答 1

0

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

于 2020-05-26T14:37:58.950 回答