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 channelprivate-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§
- Auth
Data - Authorization data for private/presence channels.
- Broadcast
- A fluent builder for broadcasting messages.
- Broadcast
Builder - Builder for constructing a broadcast message.
- Broadcast
Config - Configuration for the broadcaster.
- Broadcast
Message - A message that can be broadcast to channels.
- Broadcaster
- The broadcaster manages channels and client connections.
- Channel
Info - Information about a channel.
- Client
- A connected client.
- Presence
Member - A member in a presence channel.
Enums§
- Channel
Type - Channel type based on prefix.
- Client
Message - A client-to-server message.
- Error
- Errors that can occur during broadcasting.
- Server
Message - A server-to-client message.
Traits§
- Channel
Authorizer - Trait for authorizing channel access.
Attribute Macros§
- async_
trait - Re-export async_trait for convenience.