带有错误代码的boost beast websocket服务器读取,文件结尾且操作已取消

时间:2019-06-06 12:21:41

标签: tcp websocket asio boost-beast

我正在尝试按照this boost beast example中的说明设置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-> read(buffer);

有时会捕获并打印一个文件End of 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套接字关闭引起的,但问题是这种不正常发生的频率很高,这没有任何意义。究竟是什么会导致操作取消系统错误?

1 个答案:

答案 0 :(得分:0)

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