Class: Publisher
Publishes live media to Vindral LiveCloud over MoQ.
The Publisher handles encoding, connection management, and automatic reconnection.
Use .on("event", callback) to listen to events. See PublisherEvents for available events.
const publisher = new Publisher({
url: "https://moq.global.cdn.vindral.com:7001/voq/publish",
channelId: "my-channel",
authToken: "secret",
})
publisher.on("connection state", (state) => console.log("connection:", state))
publisher.on("error", (error) => console.error(error))
publisher
.addTrack({ kind: "video", track: videoTrack, config: videoConfig })
.addTrack({ kind: "audio", track: audioTrack, config: audioConfig })
await publisher.publish()
// Later: stop publishing but keep encoding active
await publisher.unpublish()
// Or: shut down completely
await publisher.close()
Extends
Emitter<PublisherEvents>
Accessors
connectionState
Get Signature
get connectionState():
ConnectionState
Current connection state. Returns "disconnected" when no connection exists.
Returns
state
Get Signature
get state():
PublisherState
Current publisher state.
Returns
Methods
addTrack()
addTrack(
input):this
Add a video or audio track for encoding. Can only be called in "idle" state.
Parameters
input
Returns
this
this for method chaining
close()
close():
Promise<void>
Close the publisher completely. Works from any state. Terminal, cannot be reused.
Returns
Promise<void>
closed()
closed():
Promise<PublisherError|undefined>
Promise that resolves when the publisher is closed, with the error that caused it (if any).
Returns
Promise<PublisherError | undefined>
off()
Call Signature
off<
T>(eventName,fn):void
Remove an event listener from eventName
Type Parameters
T
T extends never
Parameters
eventName
T
fn
() => EventListenerReturnType
Returns
void
Inherited from
Emitter.off
Call Signature
off<
T>(eventName,fn):void
Remove an event listener from eventName
Type Parameters
T
T extends keyof PublisherEvents
Parameters
eventName
T
fn
(args) => EventListenerReturnType
Returns
void
Inherited from
Emitter.off
on()
Call Signature
on<
T>(eventName,fn):void
Add an event listener to eventName
Event listeners may optionally return a "defer function" that will be called once all other listeners have been called. This is useful when one listener may want everone to have reacted to an event before calling something.
Type Parameters
T
T extends never
Parameters
eventName
T
fn
() => void
Returns
void
Inherited from
Emitter.on
Call Signature
on<
T>(eventName,fn):void
Add an event listener to eventName
Event listeners may optionally return a "defer function" that will be called once all other listeners have been called. This is useful when one listener may want everone to have reacted to an event before calling something.
Type Parameters
T
T extends keyof PublisherEvents
Parameters
eventName
T
fn
(args) => void
Returns
void
Inherited from
Emitter.on
once()
Call Signature
once<
T>(eventName,fn):void
Add an event listener to eventName that will be called once only
Event listeners may optionally return a "defer function" that will be called once all other listeners have been called. This is useful when one listener may want everone to have reacted to an event before calling something.
Type Parameters
T
T extends never
Parameters
eventName
T
fn
() => void
Returns
void
Inherited from
Emitter.once
Call Signature
once<
T>(eventName,fn):void
Add an event listener to eventName that will be called once only
Event listeners may optionally return a "defer function" that will be called once all other listeners have been called. This is useful when one listener may want everone to have reacted to an event before calling something.
Type Parameters
T
T extends keyof PublisherEvents
Parameters
eventName
T
fn
(args) => void
Returns
void
Inherited from
Emitter.once
prepare()
prepare():
Promise<void>
Start encoding without connecting to the server. Validates tracks and warms up cache.
Returns
Promise<void>
publish()
publish():
Promise<void>
Connect to the server and start publishing. Auto-prepares if in "idle" state.
Returns
Promise<void>
Throws
if the connection fails
reset()
reset():
void
Reset the event emitter
Returns
void
Inherited from
Emitter.reset
setAuthToken()
setAuthToken(
authToken):void
Set auth token for current and future connections.
Parameters
authToken
string
Returns
void
setChannelId()
setChannelId(
channelId):void
Set channel ID (updates namespace immediately if producer is active).
Parameters
channelId
string
Returns
void
setUrl()
setUrl(
url):void
Set URL for current and future connections.
Parameters
url
string
Returns
void
stats()
stats():
PublisherStatistics
Get current statistics from the encoding and connection layers.
Returns
PublisherStatistics
unpublish()
unpublish():
Promise<void>
Stop the connection but keep encoding active. Call publish again to resume.
Returns
Promise<void>