Back to Rivet

RivetKit Rust Client

rivetkit-rust/packages/client/README.md

2.2.12.2 KB
Original Source

RivetKit Rust Client

The Rust client for RivetKit, the Stateful Serverless Framework

Use this client to connect to RivetKit services from Rust applications.

Resources

Getting Started

Step 1: Installation

Add to your Cargo.toml:

toml
[dependencies]
rivetkit-client = "0.1.0"

Step 2: Connect to Actor

rust
use rivetkit_client::{Client, EncodingKind, GetOrCreateOptions, TransportKind};
use serde_json::json;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Create a client connected to your RivetKit manager
    let client = Client::new(
        "http://localhost:8080",
        TransportKind::Sse,
        EncodingKind::Json
    );

    // Connect to a chat room actor
    let chat_room = client.get_or_create(
        "chat-room",
        ["keys-here"].into(),
        GetOrCreateOptions::default()
    )?.connect();
    
    // Listen for new messages
    chat_room.on_event("newMessage", |args| {
        let username = args[0].as_str().unwrap();
        let message = args[1].as_str().unwrap();
        println!("Message from {}: {}", username, message);
    }).await;

    // Send message to room
    chat_room.action("sendMessage", vec![
        json!("william"),
        json!("All the world's a stage.")
    ]).await?;

    // When finished
    client.disconnect();

    Ok(())
}

Supported Transport Methods

The Rust client supports multiple transport methods:

  • TransportKind::Sse: Server-Sent Events
  • TransportKind::Ws: WebSockets

Supported Encodings

The Rust client supports multiple encoding formats:

  • EncodingKind::Json: JSON encoding
  • EncodingKind::Cbor: CBOR binary encoding

Community & Support

License

Apache 2.0