Expand description
§rustapi-ws
WebSocket support for the RustAPI framework.
This crate provides WebSocket upgrade handling, message types, and utilities for building real-time bidirectional communication in your RustAPI applications.
§Features
- WebSocket Upgrade: Seamless HTTP to WebSocket upgrade via the
WebSocketextractor - Message Types: Support for Text, Binary, Ping/Pong messages
- Type-Safe JSON: Serialize/deserialize JSON messages with serde
- Connection Management: Clean connection lifecycle with proper close handling
- Broadcast Support: Send messages to multiple connected clients
§Quick Start
ⓘ
use rustapi_rs::prelude::*;
use rustapi_ws::{WebSocket, Message};
async fn ws_handler(ws: WebSocket) -> impl IntoResponse {
ws.on_upgrade(|socket| async move {
let (mut sender, mut receiver) = socket.split();
while let Some(msg) = receiver.next().await {
match msg {
Ok(Message::Text(text)) => {
let _ = sender.send(Message::Text(format!("Echo: {}", text))).await;
}
Ok(Message::Close(_)) => break,
_ => {}
}
}
})
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
RustApi::new()
.route("/ws", get(ws_handler))
.run("127.0.0.1:8080")
.await
}Modules§
- auth
- Authentication support for WebSocket connections WebSocket authentication support
- prelude
- Prelude module for convenient imports
Structs§
- Broadcast
- A broadcast channel for sending messages to multiple WebSocket clients
- Close
Frame - WebSocket close frame
- WebSocket
- WebSocket extractor for upgrading HTTP connections to WebSocket
- WebSocket
Receiver - Receiver half of a WebSocket stream
- WebSocket
Sender - Sender half of a WebSocket stream
- WebSocket
Stream - A WebSocket stream
- WebSocket
Upgrade - WebSocket upgrade response
- WsCompression
Config - Configuration for WebSocket compression
- WsHeartbeat
Config - Configuration for WebSocket heartbeats
Enums§
- Close
Code - WebSocket close codes
- Message
- WebSocket message type
- WebSocket
Error - Error type for WebSocket operations