Crate ws2

Source
Expand description

§Very Simple Websocket For Rust

ws2 is a very easy to use WebSocket server & client for Rust, builds on ws crate. it was designed for production, the receive timeout provides a non-blocking way.

§Server Example

use log2::*;
use ws2::{Pod, WebSocket};

struct Worker;

impl ws2::Handler for Worker {
    fn on_open(&mut self, ws: &WebSocket) -> Pod {
        info!("on open: {ws}");
        Ok(())
    }

    fn on_close(&mut self, ws: &WebSocket) -> Pod {
        info!("on close: {ws}");
        Ok(())
    }

    fn on_message(&mut self, ws: &WebSocket, msg: String) -> Pod {
        info!("on message: {msg}, {ws}");
        let echo = format!("echo: {msg}");
        let n = ws.send(echo);
        Ok(n?)
    }
}

fn main() -> Pod {
    let _log2 = log2::start();
    let address = "127.0.0.1:3125";
    let mut worker = Worker {};

    info!("listen on: {address}");
    let mut server = ws2::listen(address)?;

    loop {
        let _ = server.process(&mut worker, 0.5);
        // do other stuff
    }
}

§Client Example

The websocket client was designed as out-of-the-box, it will auto reconnect every 3s.

use log2::*;
use ws2::{Pod, WebSocket};

struct Worker;

impl ws2::Handler for Worker {
    fn on_open(&mut self, ws: &WebSocket) -> Pod {
        // ws.send("Hello World")?;
        info!("on open: {ws}");
        Ok(())
    }

    fn on_close(&mut self, ws: &WebSocket) -> Pod {
        info!("on close: {ws}");
        Ok(())
    }

    fn on_message(&mut self, ws: &WebSocket, msg: String) -> Pod {
        info!("on message: {msg}, {ws}");
        Ok(())
    }
}

fn main() -> Pod {
    let _log2 = log2::start();
    let url = "wss://stream.binance.com:9443/ws/btcusdt@miniTicker";
    let mut client = ws2::connect(url);
    let mut workder = Worker {};

    loop {
        let _ = client.process(&mut workder, 0.5);
        // do other stuff
    }
}

Re-exports§

pub use client::connect;
pub use client::Client;
pub use server::listen;
pub use server::Server;

Modules§

client
server

Structs§

Sender
A representation of the output of the WebSocket connection. Use this to send messages to the other endpoint.
WebSocket
WebSocket sender

Constants§

INFINITE
Wait infinitely

Traits§

Handler

Type Aliases§

Pod
Flexible result