Thanks to visit codestin.com
Credit goes to lib.rs

5 releases

new 0.1.71 Jan 17, 2026
0.1.70 Jan 17, 2026
0.1.69 Jan 17, 2026
0.1.68 Jan 17, 2026
0.1.67 Jan 16, 2026

#1250 in Asynchronous


Used in ferro-rs

MIT license

36KB
718 lines

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

Dependencies

~10–14MB
~175K SLoC