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
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 channelprivate-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