Skip to content

[Experimental]

Use req_perform_connection() to perform a request if you want to stream the response body. A response returned by req_perform_connection() includes a connection as the body. You can then use resp_stream_raw(), resp_stream_lines(), or resp_stream_sse() to retrieve data a chunk at a time. Always finish up by closing the connection by calling close(response).

This is an alternative interface to req_perform_stream() that returns a connection that you can use to pull the data, rather than providing callbacks that the data is pushed to. This is useful if you want to do other work in between handling inputs from the stream.

Usage

req_perform_connection(req, blocking = TRUE)

Arguments

req

A httr2 request object.

blocking

When retrieving data, should the connection block and wait for the desired information or immediately return what it has (possibly nothing)?

Examples

req <- request(example_url()) |>
  req_url_path("/stream-bytes/32768")
resp <- req_perform_connection(req)

length(resp_stream_raw(resp, kb = 16))
#> [1] 16384
length(resp_stream_raw(resp, kb = 16))
#> [1] 16384
# When the stream has no more data, you'll get an empty result:
length(resp_stream_raw(resp, kb = 16))
#> [1] 0

# Always close the response when you're done
close(resp)