ferro-broadcast

Crates.ioferro-broadcast
lib.rsferro-broadcast
version0.1.71
created_at2026-01-16 17:13:45.71451+00
updated_at2026-01-17 20:04:46.49432+00
descriptionWebSocket broadcasting and real-time channels for Ferro framework
homepage
repositoryhttps://github.com/albertogferrario/ferro
max_upload_size
id2048982
size56,550
Alberto Giancarlo Ferrario (albertogferrario)

documentation

README

ferro-broadcast

WebSocket broadcasting and real-time channels for the Ferro framework.

Features

  • Public channels (anyone can subscribe)
  • Private channels (require authorization)
  • Presence channels (track online users)
  • Laravel Echo compatible

Usage

use ferro_broadcast::{Broadcast, Broadcaster};
use std::sync::Arc;

// Create a broadcaster
let broadcaster = Arc::new(Broadcaster::new());

// Broadcast to a public channel
Broadcast::new(broadcaster.clone())
    .channel("orders")
    .event("OrderCreated")
    .data(&order)
    .send()
    .await?;

// Broadcast to a private channel
Broadcast::new(broadcaster.clone())
    .channel("private-orders.1")
    .event("OrderUpdated")
    .data(&order)
    .send()
    .await?;

Channel Types

Channels are determined by their name prefix:

  • orders - Public channel
  • private-orders.1 - Private channel (requires auth)
  • presence-chat.1 - Presence channel (tracks members)

Authorization

use ferro_broadcast::{AuthData, ChannelAuthorizer};

struct MyAuthorizer;

#[async_trait::async_trait]
impl ChannelAuthorizer for MyAuthorizer {
    async fn authorize(&self, data: &AuthData) -> bool {
        // Verify user can access channel
        verify_user_access(&data.channel, &data.auth_token)
    }
}

License

MIT

Commit count: 515

cargo fmt