rivetkit-rust/packages/client/README.md
The Rust client for RivetKit, the Stateful Serverless Framework
Use this client to connect to RivetKit services from Rust applications.
Add to your Cargo.toml:
[dependencies]
rivetkit-client = "0.1.0"
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(())
}
The Rust client supports multiple transport methods:
TransportKind::Sse: Server-Sent EventsTransportKind::Ws: WebSocketsThe Rust client supports multiple encoding formats:
EncodingKind::Json: JSON encodingEncodingKind::Cbor: CBOR binary encodingApache 2.0