reqwest-websocket
Extension for reqwest to allow websocket connections.
This crate contains the extension trait RequestBuilderExt, which adds an
upgrade method to reqwest::RequestBuilder that prepares the HTTP request to
upgrade the connection to a WebSocket. After you call upgrade(), you can send
your upgraded request as usual with send(), which will return an
UpgradeResponse. The UpgradeResponse wraps reqwest::Response (and also
dereferences to it), so you can inspect the response if needed. Finally, you can
use into_websocket() on the response to turn it into an async stream and sink
for messages. Both text and binary messages are supported.
Example
For a full example take a look at hello_world.rs.
// Extends the `reqwest::RequestBuilder` to allow WebSocket upgrades.
use RequestBuilderExt;
// Creates a GET request, upgrades and sends it.
let response = default
.get
.upgrade // Prepares the WebSocket upgrade.
.send
.await?;
// Turns the response into a WebSocket stream.
let mut websocket = response.into_websocket.await?;
// The WebSocket implements `Sink<Message>`.
websocket.send.await?;
// The WebSocket is also a `TryStream` over `Message`s.
while let Some = websocket.try_next.await?
Support for WebAssembly
reqwest-websocket uses the HTTP upgrade functionality built into reqwest,
which is not available on WebAssembly. When you use reqwest-websocket in
WebAssembly, it falls back to using web_sys::WebSocket. This means that
everything except the URL (including query parameters) is not used for your
request.