微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

强化野兽每个请求三个会话?

如何解决强化野兽每个请求三个会话?

我尝试运行 Boost-Beast 示例 http_server_async.cpp。它运行良好(使用一个线程,带有 mingw64 的 windows,gcc 10.2),但一段时间后我收到了三条消息:

read: The socket was closed due to a timeout
read: The socket was closed due to a timeout
read: The socket was closed due to a timeout

我猜它是由于超时而发生的,在 session::do_read 方法中设置为 30 秒,如果我们将方法 session::on_read 中的条件修改为:

if(ec == http::error::end_of_stream || ec == beast::error::timeout) return do_close();

它应该可以解决问题。但让我担心的是,即使只发送了一个请求(来自 Chrome),我们也有 3 条消息。我检查了 - 是的,根据该请求创建了三个会话。

所以我有几个问题:

  1. 我们可以在超时时注册一些优雅的关闭而不是去 on_read 回调吗?
  2. 为什么在一个请求上创建了 3 个会话?

解决方法

找到了。 Chrome 创建 3 个连接。 Firefox 创建 2 个连接并立即关闭一个。如果我使用 curl 或我自己的客户端运行它,则服务器端只接受一个连接。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。