Documentation

Nuvo

Nuvo is a lightweight, secure communication library for Rust, designed for simple client-server messaging. It provides both asynchronous (using Tokio) and synchronous (blocking) APIs for easy integration into various project types.

Features

  • Simple API: Easy-to-use Sender and Receiver builders.
  • Secure: Basic password authentication and session tokens.
  • Async & Sync: Full support for async/await and traditional blocking calls.
  • Lightweight Protocol: Custom binary protocol optimized for efficiency.

Installation

Add this to your Cargo.toml:

[dependencies]
nuvo = "0.1.0"

Quick Start

Asynchronous Example

use nuvo::{receiver, sender};

#[tokio::main]
async fn main() -> std::io::Result<()> {
    // Start a receiver
    let rx = receiver(8080).password("secret").listen().await?;

    // Connect with a sender
    let mut tx = sender("127.0.0.1", 8080, "secret").connect().await?;

    // Accept the connection on the receiver side
    let mut rx_session = rx.accept().await?;

    // Send and receive data
    tx.send(b"Hello from sender!").await?;
    let msg = rx_session.recv().await?;
    println!("Received: {:?}", String::from_utf8_lossy(&msg));

    Ok(())
}

Blocking Example

use nuvo::{receiver, sender};

fn main() -> std::io::Result<()> {
    // Start a receiver
    let rx = receiver(8081).password("secret").listen_blocking()?;

    // In a real application, these would be in different threads/processes
    std::thread::spawn(move || {
        let mut tx = sender("127.0.0.1", 8081, "secret").connect_blocking().unwrap();
        tx.send_blocking(b"Hello!").unwrap();
    });

    let mut rx_session = rx.accept_blocking()?;
    let msg = rx_session.recv_blocking()?;
    println!("Received: {:?}", String::from_utf8_lossy(&msg));

    Ok(())
}

License

LGPL-3.0-only