Skip to content

creativcoder/reqwest-websocket

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reqwest-websocket

crates.io Documentation MIT

Extension for reqwest to allow websocket connections.

This crate contains the extension trait RequestBuilderExt which adds an upgrade method to reqwest::ReqestBuilder that will prepare the HTTP request to upgrade the connection to a WebSocket. After you call upgrade(), you can send your upgraded request like 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 you need to. Finally you can use into_websocket() on the response to turn it into a 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 reqwest_websocket::RequestBuilderExt;

// create a GET request, upgrade it and send it.
let response = Client::default()
    .get("wss://echo.websocket.org/")
    .upgrade() // <-- prepares the websocket upgrade.
    .send()
    .await?;

// turn the response into a websocket stream
let mut websocket = response.into_websocket().await?;

// the websocket implements `Sink<Message>`.
websocket.send(Message::Text("Hello, World".into())).await?;

// the websocket is also a `TryStream` over `Message`s.
while let Some(message) = websocket.try_next().await? {
    match message {
        Message::Text(text) => println!("{text}"),
        _ => {}
    }
}

Support for WebAssembly

reqwest-websocket uses the HTTP upgrade functionality built in in reqwest, which is not available on WebAssembly. When you use reqwest-websocket in WebAssembly, it falls back to using web_sys::WebSocket. That means that everything except URL (including query parameters) is not used for your request.

About

Websockets with Reqwest

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%