Documentation / @zerotal/broadcasting / TypedBroadcastManager
Class: TypedBroadcastManager<Channels>
Defined in: broadcasting/src/TypedBroadcastManager.ts:127
A BroadcastManager variant that enforces payload types against a channel map.
All BroadcastManager APIs (WebSocket lifecycle, auth, presence) are inherited
unchanged. Only to() and toChannel() gain type constraints.
Example
const manager = new TypedBroadcastManager<Channels>();
// Static channel
manager.to('posts', 'PostCreated', { id: 1, title: 'Hello' });
// Parameterised channel
manager.toChannel('private-orders.[orderId]', { orderId: 42 }, 'OrderShipped', {
orderId: 42, trackingCode: 'UPS-123',
});
Extends
Type Parameters
Channels
Channels extends BroadcastChannelMap
Constructors
Constructor
new TypedBroadcastManager<
Channels>():TypedBroadcastManager<Channels>
Returns
TypedBroadcastManager<Channels>
Inherited from
Properties
_conns
protected_conns:Map<string,WS>
Defined in: broadcasting/src/BroadcastManager.ts:32
connectionId → live WebSocket
Inherited from
_subs
protected_subs:Map<string,Set<string>>
Defined in: broadcasting/src/BroadcastManager.ts:34
channelName → Set
Inherited from
_members
protected_members:Map<string,Map<string,PresenceMember>>
Defined in: broadcasting/src/BroadcastManager.ts:36
presence channelName → Map<connectionId, PresenceMember>
Inherited from
_authSecret
protected_authSecret:string|undefined=undefined
Defined in: broadcasting/src/BroadcastManager.ts:42
Secret for per-subscription HMAC signatures (the app's APP_KEY).
Inherited from
Accessors
wsHandlers
Get Signature
get wsHandlers():
object
Defined in: broadcasting/src/BroadcastManager.ts:246
Returns
object
open
open: (
ws) =>void
Parameters
ws
WS
Returns
void
message
message: (
ws,msg) =>undefined
Parameters
ws
WS
msg
string | Uint8Array<ArrayBufferLike>
Returns
undefined
close
close: (
ws) =>void
Parameters
ws
WS
Returns
void
Inherited from
Methods
setAuthSecret()
setAuthSecret(
secret):void
Defined in: broadcasting/src/BroadcastManager.ts:51
Set the secret used to sign/verify per-subscription auth tokens. Wired from the app's
APP_KEY by BroadcastProvider. Without it the signed-auth path is disabled and the
server falls back to the connection-level authorize callbacks.
Parameters
secret
string
Returns
void
Inherited from
BroadcastManager.setAuthSecret
signAuth()
signAuth(
socketId,channel,channelData?):string
Defined in: broadcasting/src/BroadcastManager.ts:59
Sign a socket_id / channel pair (and, for presence, its channelData) — the token
POST /broadcasting/auth hands back to the client, which echoes it in subscribe.
Parameters
socketId
string
channel
string
channelData?
string
Returns
string
Inherited from
verifyAuth()
verifyAuth(
socketId,channel,auth,channelData?):boolean
Defined in: broadcasting/src/BroadcastManager.ts:74
Constant-time check that auth is a valid signature for this socket/channel(/data).
Parameters
socketId
string
channel
string
auth
string
channelData?
string
Returns
boolean
Inherited from
authorizeWith()
authorizeWith(
fn):void
Defined in: broadcasting/src/BroadcastManager.ts:95
Register an authorization callback for private/presence channels.
Return true to allow subscription, false to deny.
Parameters
fn
Returns
void
Example
broadcast.authorizeWith(async (channel, ws) => {
if (!ws.data.userId) return false;
if (channel.startsWith('private-orders.')) {
const id = channel.split('.')[1];
return await Order.findOwner(id) === ws.data.userId;
}
return true;
});
Inherited from
BroadcastManager.authorizeWith
authorizePresenceWith()
authorizePresenceWith(
fn):void
Defined in: broadcasting/src/BroadcastManager.ts:111
Register a presence channel auth callback.
Return a PresenceMember object to grant access and track the member,
or false to deny.
Parameters
fn
Returns
void
Example
manager.authorizePresenceWith(async (channel, ws) => {
const user = await User.find(ws.data.userId);
if (!user) return false;
return { id: user.id, info: { name: user.name, avatar: user.avatar } };
});
Inherited from
BroadcastManager.authorizePresenceWith
getMembers()
getMembers(
channel):PresenceMember[]
Defined in: broadcasting/src/BroadcastManager.ts:122
Return all members currently subscribed to a presence channel.
Parameters
channel
string
Returns
Example
const members = manager.getMembers('presence-chat.room');
// [{ id: 1, info: { name: 'Alice' } }, ...]
Inherited from
handleOpen()
handleOpen(
ws):void
Defined in: broadcasting/src/BroadcastManager.ts:128
Parameters
ws
WS
Returns
void
Inherited from
handleMessage()
handleMessage(
ws,raw):Promise<void>
Defined in: broadcasting/src/BroadcastManager.ts:133
Parameters
ws
WS
raw
string | Uint8Array<ArrayBufferLike>
Returns
Promise<void>
Inherited from
BroadcastManager.handleMessage
handleClose()
handleClose(
ws):void
Defined in: broadcasting/src/BroadcastManager.ts:166
Parameters
ws
WS
Returns
void
Inherited from
subscriptionsFor()
subscriptionsFor(
connectionId):string[]
Defined in: broadcasting/src/BroadcastManager.ts:226
Returns the list of channels a connection is subscribed to.
Parameters
connectionId
string
Returns
string[]
Inherited from
BroadcastManager.subscriptionsFor
subscriberCount()
subscriberCount(
channel):number
Defined in: broadcasting/src/BroadcastManager.ts:235
Returns the number of subscribers on a channel.
Parameters
channel
string
Returns
number
Inherited from
BroadcastManager.subscriberCount
connectionCount()
connectionCount():
number
Defined in: broadcasting/src/BroadcastManager.ts:240
Total open connections.
Returns
number
Inherited from
BroadcastManager.connectionCount
_onHandlerError()
protected_onHandlerError(ws,error):void
Defined in: broadcasting/src/BroadcastManager.ts:267
Last-resort handler for a rejection escaping handleMessage.
Logs and, where possible, tells the offending client. Never rethrows: the whole point is that one client's bad frame must not terminate the process serving everyone else.
Parameters
ws
WS
error
unknown
Returns
void
Inherited from
BroadcastManager._onHandlerError
upgradeData()
upgradeData(
req):Record<string,unknown>
Defined in: broadcasting/src/BroadcastManager.ts:278
Factory for upgradeData passed to app.withWebSocket().
Parameters
req
Request
Returns
Record<string, unknown>
Inherited from
to()
Call Signature
to<
Ch,Ev>(channel,event,data,opts?):void
Defined in: broadcasting/src/TypedBroadcastManager.ts:135
Typed broadcast to a static channel (no [param] placeholders).
TypeScript will enforce that event and data match the channel map entry.
Falls back to the untyped base method for any string channel (e.g. if you
need to broadcast on a dynamically constructed name).
Type Parameters
Ch
Ch extends string
Ev
Ev extends string
Parameters
channel
Ch
event
Ev
data
PayloadOf<Channels, Ch, Ev>
opts?
exceptSocketId?
string
Returns
void
Overrides
Call Signature
to(
channel,event,data?,opts?):void
Defined in: broadcasting/src/TypedBroadcastManager.ts:142
Untyped fallback — preserves compatibility with the base class signature.
Parameters
channel
string
event
string
data?
unknown
opts?
exceptSocketId?
string
Returns
void
Overrides
BroadcastManager.to
toChannel()
toChannel<
Pattern,Ev>(pattern,params,event,data):void
Defined in: broadcasting/src/TypedBroadcastManager.ts:162
Typed broadcast to a parameterised channel pattern.
The pattern is interpolated with params at runtime. TypeScript enforces
that the pattern key exists in the channel map and that event and data
match its declared event types.
Type Parameters
Pattern
Pattern extends string
Ev
Ev extends string
Parameters
pattern
Pattern
params
ChannelParamRecord<Pattern>
event
Ev
data
PayloadOf<Channels, Pattern, Ev>
Returns
void
Example
manager.toChannel('private-orders.[orderId]', { orderId: 42 }, 'OrderShipped', {
orderId: 42, trackingCode: 'UPS-123',
});
send()
send(
event):void
Defined in: broadcasting/src/TypedBroadcastManager.ts:182
Dispatch a typed broadcast event.
Accepts both TypedBroadcastEvent (with map-matched payload types) and the
untyped BroadcastEvent interface, so this is a drop-in replacement for
the base send().
Parameters
event
BroadcastEvent | TypedBroadcastEvent<Channels, keyof Channels & string, EventsOf<Channels, keyof Channels & string>>
Returns
void