Skip to content

A convenience library for using websockets both in native and WASM environments!

License

Notifications You must be signed in to change notification settings

shadowylab/async-wsocket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Async WebSocket

A convenience library for using websockets both in native and WASM environments! Include embedded tor client support.

use std::time::Duration;

use async_wsocket::{ConnectionMode, Url, WsMessage};
use futures_util::{SinkExt, StreamExt};

const NONCE: u64 = 123456789;

#[tokio::main]
async fn main() {
    let url =
        Url::parse("ws://oxtrdevav64z64yb7x6rjg4ntzqjhedm5b5zjqulugknhzr46ny2qbad.onion").unwrap();
    let (mut tx, mut rx) =
        async_wsocket::connect(&url, ConnectionMode::tor(), Duration::from_secs(120))
            .await
            .unwrap();

    // Send ping
    let nonce = NONCE.to_be_bytes().to_vec();
    tx.send(WsMessage::Ping(nonce.clone())).await.unwrap();

    // Listen for messages
    while let Some(msg) = rx.next().await {
        if let Ok(WsMessage::Pong(bytes)) = msg {
            assert_eq!(nonce, bytes);
            println!("Pong match!");
            break;
        }
    }
}

Crate Feature Flags

The following crate feature flags are available:

Feature Default Description
socks No Enable socks proxy support
tor No Enable embedded tor client support

Minimum Supported Rust Version (MSRV)

The MSRV for this project when compiled with default features and on native targets is 1.63.0. When using tor feature, MSRV is 1.70.0. MSRV for WASM targets is 1.73.0

License

This project is distributed under the MIT software license - see the LICENSE file for details

Donations

⚡ Tips: https://getalby.com/p/yuki

⚡ Lightning Address: yuki@getalby.com

About

A convenience library for using websockets both in native and WASM environments!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published