|
Boost Users : |
From: Dominique Devienne (ddevienne_at_[hidden])
Date: 2020-12-15 11:20:15
On Tue, Dec 15, 2020 at 11:54 AM Dominique Devienne <ddevienne_at_[hidden]>
wrote:
> Hi. Continuing my explorations of Boost.Beast.
>
> So now I have:
> * a small Boost.Beast HTTP server (based on async_http_server example), and
> * a small Boost.Beast HTTP client (based on sync_http_client example).
>
> This works, in that I can start the client (wrapped in a helper class),
> make several requests, and close the client. But until now, the client was
> short-lived,
> so no problem. (the server was started too of course, and long lived as
> expected).
>
> Now I'm embedding that HTTP client into another (WebSocket) server,
> which uses that same wrapper class above, successfully connects to the
> HTTP server on startup, and now waits for WebSocket connections, at which
> time it's supposed to make HTTP requests to the HTTP server for various
> reasons.
>
> Problem is, the HTTP client times out after 5s. While I want it to be long
> lived.
> I've read Vinnie's answer in https://stackoverflow.com/a/56880415/103724
> about
> sync operation not having timeouts, but I don't want to control timeouts
> of individual
> requests here (for now at least), I want to not have the underlying socket
> not timeout
> on its own, the same way a WebSocket does not timeout either. Is that
> possible?
> Who controls that 5s timeout?
>
> Would switching to an async HTTP client make any difference? Sounds to me
> that
> it would allow me to control timeouts of requests, but would it make any
> difference
> to the socket timeout described above?
>
> Thanks, --DD
>
Not that I tried to obvious below, to stream_.expires_never() on the client
side,
and that doesn't make a difference.
```
beast::error_code ec;
impl_->resolved_to_ = impl_->resolver_.resolve(
impl_->host_, std::to_string(port), ec
);
if (!ec) {
impl_->stream_.connect(impl_->resolved_to_, ec);
}
if (ec) { [...]
return false;
}
impl_->stream_.expires_never();
```
Also tried adding the stream_.expires_never() on the server-side
```
// Take ownership of the stream
session(
const ServerConfig& config,
tcp::socket&& socket
) : config_(config)
, stream_(std::move(socket))
{
stream_.expires_never();
}
```
Still the 5s timeout :(
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net