Skip to main content

Crate ferro_broadcast

Crate ferro_broadcast 

Source
Expand description

§Ferro Broadcast

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

Provides a Laravel Echo-inspired broadcasting system with support for:

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

§Example

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

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

// Broadcast to a channel
Broadcast::new(broadcaster.clone())
    .channel("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

For private and presence channels, implement the ChannelAuthorizer trait:

use ferro_broadcast::{AuthData, ChannelAuthorizer};

struct MyAuthorizer;

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

Structs§

AuthData
Authorization data for private/presence channels.
Broadcast
A fluent builder for broadcasting messages.
BroadcastBuilder
Builder for constructing a broadcast message.
BroadcastConfig
Configuration for the broadcaster.
BroadcastMessage
A message that can be broadcast to channels.
Broadcaster
The broadcaster manages channels and client connections.
ChannelInfo
Information about a channel.
Client
A connected client.
PresenceMember
A member in a presence channel.

Enums§

ChannelType
Channel type based on prefix.
ClientMessage
A client-to-server message.
Error
Errors that can occur during broadcasting.
ServerMessage
A server-to-client message.

Traits§

ChannelAuthorizer
Trait for authorizing channel access.

Attribute Macros§

async_trait
Re-export async_trait for convenience.