socketio-rs 0.1.8

An implementation of a socketio written in rust.
Documentation
use futures_util::FutureExt;
use serde_json::json;
use socketio_rs::{AckId, Payload, ServerBuilder, ServerSocket};

#[tokio::main]
async fn main() {
    tracing_subscriber::fmt::init();
    let callback = |_payload: Option<Payload>, socket: ServerSocket, _| {
        async move {
            socket.join(vec!["room 1"]).await;
            socket.emit_to(vec!["room 1"], "test", json!("foo")).await;
        }
        .boxed()
    };

    let ack_callback = |payload: Option<Payload>, socket: ServerSocket, ack: Option<AckId>| {
        async move {
            if let Some(id) = ack {
                let payload = payload.unwrap_or_else(|| json!("ack back").into());
                let _ = socket.ack(id, payload).await;
            }
        }
        .boxed()
    };
    let server = ServerBuilder::new(4209)
        .on("/admin", "foo", callback)
        .on("/admin", "ack", ack_callback)
        .build();
    server.serve().await;
}