Events Package
Broadcasting
Broadcast events to clients via WebSockets.
Broadcasting
Broadcast events to clients via WebSockets.
Channel Types
import { PublicChannel, PrivateChannel, PresenceChannel } from "@lara-node/events";
// Public channel (anyone can listen)
new PublicChannel("chat");
// Private channel (requires auth)
new PrivateChannel(`user.${userId}`);
// Presence channel (tracks who is online)
new PresenceChannel(`room.${roomId}`);
Broadcasting Events
import { ShouldBroadcast, BroadcastAs, BroadcastToOthers } from "@lara-node/events";
@ShouldBroadcast()
class MessageSent {
constructor(public message: Message) {}
broadcastOn() {
return new PrivateChannel(`chat.${this.message.roomId}`);
}
}
Broadcast Decorators
@ShouldBroadcast()
@BroadcastAs("new-message")
@BroadcastToOthers()
class MessageSent {
broadcastOn() {
return new Channel("chat");
}
broadcastWith() {
return {
id: this.message.id,
text: this.message.text,
user: this.message.user.name,
};
}
}
Broadcast Conditions
@ShouldBroadcast()
class OrderStatusChanged {
broadcastWhen() {
return this.order.status === "shipped";
}
}
Broadcast Facade
import { Broadcast } from "@lara-node/events";
Broadcast.channel("chat").emit("message", data);
Broadcast.toOthers().channel("chat").emit("message", data);
Configuration
BROADCAST_DRIVER=websocket