Skip to main content
zerotal

Documentation


Documentation / @zerotal/broadcasting / Broadcast

Class: Broadcast

Defined in: broadcasting/src/facades/Broadcast.ts:34

Broadcast facade — thin proxy to the active BroadcastManager.

Example

// In a controller
Broadcast.send(new PostUpdated(post));
Broadcast.to('posts', 'PostDeleted', { id: post.id });

// In tests
const fake = Broadcast.fake();
// ... trigger action ...
fake.assertBroadcast('PostUpdated', 'posts');
Broadcast.resetFake();

Constructors

Constructor

new Broadcast(): Broadcast

Returns

Broadcast

Methods

channel()

static channel(pattern, callback): void

Defined in: broadcasting/src/facades/Broadcast.ts:61

Register a channel authorization callback. Call this in routes/channels.ts.

Patterns use [param] placeholders (one channel segment each), passed to the callback positionally after the authenticated user. Return a boolean for private channels, or a member-data object for presence channels (false/null to deny).

Parameters

pattern

string

callback

ChannelCallback

Returns

void

Example

// routes/channels.ts
Broadcast.channel("orders.[orderId]", async (user: User, orderId: string) => {
  return user.id === (await Order.findOrNew(orderId)).userId;
});

Broadcast.channel("chat.[roomId]", (user: User, roomId: string) => {
  return user.canJoin(roomId) ? { id: user.id, name: user.name } : null;
});

channels()

static channels(): object[]

Defined in: broadcasting/src/facades/Broadcast.ts:66

Registered channel patterns (for inspection / channel:list).

Returns

object[]


on()

static on(channel): AnonymousBroadcast

Defined in: broadcasting/src/facades/Broadcast.ts:74

Begin an anonymous broadcast (no event class) on a public channel.

Parameters

channel

string

Returns

AnonymousBroadcast

Example

Broadcast.on(`orders.${id}`).as("OrderPlaced").with(order).send();

private()

static private(channel): AnonymousBroadcast

Defined in: broadcasting/src/facades/Broadcast.ts:79

Anonymous broadcast on a private channel (prefixes private-).

Parameters

channel

string

Returns

AnonymousBroadcast


presence()

static presence(channel): AnonymousBroadcast

Defined in: broadcasting/src/facades/Broadcast.ts:84

Anonymous broadcast on a presence channel (prefixes presence-).

Parameters

channel

string

Returns

AnonymousBroadcast


send()

static send(event, opts?): void

Defined in: broadcasting/src/facades/Broadcast.ts:92

Broadcast an event to all channels declared in broadcastOn(). opts.exceptSocketId skips one connection (used by broadcast(event).toOthers()).

Parameters

event

BroadcastEvent

opts?
exceptSocketId?

string

Returns

void


to()

static to(channel, eventName, data?, opts?): void

Defined in: broadcasting/src/facades/Broadcast.ts:101

Broadcast a raw event to a specific channel.

Parameters

channel

string

eventName

string

data?

unknown

opts?
exceptSocketId?

string

Returns

void

Example

Broadcast.to('posts', 'PostViewed', { id: 1, viewedAt: new Date() });

getMembers()

static getMembers(channel): PresenceMember[]

Defined in: broadcasting/src/facades/Broadcast.ts:114

Return all members currently subscribed to a presence channel. Only works with the real BroadcastManager (not the fake).

Parameters

channel

string

Returns

PresenceMember[]


fake()

static fake(): BroadcastFake

Defined in: broadcasting/src/facades/Broadcast.ts:126

Replace the real manager with a BroadcastFake for the duration of the test. Call Broadcast.resetFake() in afterEach to restore.

Returns

BroadcastFake

the fake, for assertions


resetFake()

static resetFake(): void

Defined in: broadcasting/src/facades/Broadcast.ts:132

Remove the fake and restore container-backed resolution.

Returns

void