Skip to main content
Version: Next

Class: FishjamClient

Defined in: js-server-sdk/src/client.ts:39

Client class that allows to manage Rooms and Peers for a Fishjam App. It requires the Fishjam ID and management token that can be retrieved from the Fishjam Dashboard.

Constructors​

Constructor​

new FishjamClient(config): FishjamClient

Defined in: js-server-sdk/src/client.ts:65

Create new instance of Fishjam Client.

Does not verify credentials against the backend — use FishjamClient.create or call FishjamClient.checkCredentials afterwards for that.

Example usage:

const fishjamClient = new FishjamClient({ fishjamId: fastify.config.FISHJAM_ID, managementToken: fastify.config.FISHJAM_MANAGEMENT_TOKEN, });

Parameters​

ParameterType
configFishjamConfig

Returns​

FishjamClient

Methods​

checkCredentials()​

checkCredentials(): Promise<void>

Defined in: js-server-sdk/src/client.ts:119

Verifies the configured credentials by making a single lightweight call to the Fishjam backend. Resolves on success, throws InvalidFishjamCredentialsException on 401/404 from the backend, otherwise rethrows the standard mapped exception.

Returns​

Promise<void>


create()​

static create(config): Promise<FishjamClient>

Defined in: js-server-sdk/src/client.ts:107

Async factory: constructs a client and verifies credentials against the backend.

Throws InvalidFishjamCredentialsException when the fishjamId / managementToken pair is rejected by the backend.

Example:

const client = await FishjamClient.create({ fishjamId: process.env.FISHJAM_ID!, managementToken: process.env.FISHJAM_MANAGEMENT_TOKEN!, });

Parameters​

ParameterType
configFishjamConfig

Returns​

Promise<FishjamClient>


createAgent()​

createAgent(roomId, options, callbacks?): Promise<{ agent: FishjamAgent; peer: Peer; }>

Defined in: js-server-sdk/src/client.ts:198

Create a new agent assigned to a room.

Parameters​

ParameterType
roomIdRoomId
optionsPeerOptionsAgent
callbacks?AgentCallbacks

Returns​

Promise<{ agent: FishjamAgent; peer: Peer; }>


createCompositionRecording()​

createCompositionRecording(config): Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>

Defined in: js-server-sdk/src/client.ts:376

Create a new recording that mirrors existing composition output. Capturing starts synchronously, so the returned recording is active.

Parameters​

ParameterType
configCompositionRecordingConfig

Returns​

Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>


createLivestreamStreamerToken()​

createLivestreamStreamerToken(roomId): Promise<StreamerToken>

Defined in: js-server-sdk/src/client.ts:340

Creates a livestream streamer token for the given room.

Parameters​

ParameterType
roomIdRoomId

Returns​

Promise<StreamerToken>

a livestream streamer token


createLivestreamViewerToken()​

createLivestreamViewerToken(roomId): Promise<ViewerToken>

Defined in: js-server-sdk/src/client.ts:328

Creates a livestream viewer token for the given room.

Parameters​

ParameterType
roomIdRoomId

Returns​

Promise<ViewerToken>

a livestream viewer token


createMoqAccess()​

createMoqAccess(config?): Promise<MoqAccess>

Defined in: js-server-sdk/src/client.ts:352

Creates MoQ access.

Parameters​

ParameterType
config?MoqAccessConfig

Returns​

Promise<MoqAccess>

connection details containing the relay URL with the JWT embedded as a ?jwt= query parameter, and the token itself


createPeer()​

createPeer(roomId, options): Promise<{ peer: Peer; peerToken: string; }>

Defined in: js-server-sdk/src/client.ts:182

Create a new peer assigned to a room.

Parameters​

ParameterType
roomIdRoomId
optionsPeerOptionsWebRTC

Returns​

Promise<{ peer: Peer; peerToken: string; }>


createRecording()​

createRecording(config): Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>

Defined in: js-server-sdk/src/client.ts:364

Parameters​

ParameterType
configCompositionRecordingConfig

Returns​

Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>

Deprecated​

Use createCompositionRecording instead. Create a new recording that mirrors existing composition output. Capturing starts synchronously, so the returned recording is active.


createRoom()​

createRoom(config): Promise<Room>

Defined in: js-server-sdk/src/client.ts:147

Create a new room. All peers connected to the same room will be able to send/receive streams to each other.

Parameters​

ParameterType
configRoomConfig

Returns​

Promise<Room>


createTemplateRecording()​

createTemplateRecording(config, template): Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>

Defined in: js-server-sdk/src/client.ts:392

Start a new recording that renders its own scene from a template.

The template bundle is either a Blob or a path to read it from, and can weigh at most 1 MiB; Only valid template bundles are accepted.

Parameters​

ParameterType
configTemplateRecordingConfig
templatestring | Blob

Returns​

Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>


createVapiAgent()​

createVapiAgent(roomId, options): Promise<{ peer: Peer; }>

Defined in: js-server-sdk/src/client.ts:221

Create a new VAPI agent assigned to a room.

Parameters​

ParameterType
roomIdRoomId
optionsPeerOptionsVapi

Returns​

Promise<{ peer: Peer; }>


deletePeer()​

deletePeer(roomId, peerId): Promise<void>

Defined in: js-server-sdk/src/client.ts:249

Delete a peer - this will also disconnect the peer from the room.

Parameters​

ParameterType
roomIdRoomId
peerIdPeerId

Returns​

Promise<void>


deleteRecording()​

deleteRecording(recordingId): Promise<void>

Defined in: js-server-sdk/src/client.ts:449

Delete a recording. Its stored media is removed asynchronously. A recording that is still active cannot be deleted — stop it first or wait for it to finish.

Parameters​

ParameterType
recordingIdRecordingId

Returns​

Promise<void>


deleteRoom()​

deleteRoom(roomId): Promise<void>

Defined in: js-server-sdk/src/client.ts:159

Delete an existing room. All peers connected to this room will be disconnected and removed.

Parameters​

ParameterType
roomIdRoomId

Returns​

Promise<void>


forwardRoomTracks()​

forwardRoomTracks(roomId, compositionUrl): Promise<void>

Defined in: js-server-sdk/src/client.ts:304

Forwards every track published in the room into a composition, which composes them into its outputs. Pass the composition's address, as returned by CompositionClient.compositionUrl.

Parameters​

ParameterType
roomIdRoomId
compositionUrlstring

Returns​

Promise<void>


getAllRecordings()​

getAllRecordings(metadata?): Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>[]>

Defined in: js-server-sdk/src/client.ts:417

Get a list of all recordings, optionally filtered by metadata. Returns recordings whose metadata contains all the given key-value pairs.

Parameters​

ParameterType
metadata?Record<string, unknown>

Returns​

Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>[]>


getAllRooms()​

getAllRooms(): Promise<Room[]>

Defined in: js-server-sdk/src/client.ts:170

Get a list of all existing rooms.

Returns​

Promise<Room[]>


getRecording()​

getRecording(recordingId): Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>

Defined in: js-server-sdk/src/client.ts:404

Get details about a given recording.

Parameters​

ParameterType
recordingIdRecordingId

Returns​

Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>


getRoom()​

getRoom(roomId): Promise<Room>

Defined in: js-server-sdk/src/client.ts:237

Get details about a given room.

Parameters​

ParameterType
roomIdRoomId

Returns​

Promise<Room>


livestreamWhipUrl()​

livestreamWhipUrl(): string

Defined in: js-server-sdk/src/client.ts:320

Where to publish a livestream, paired with a token from FishjamClient.createLivestreamStreamerToken. A composition reaches viewers by sending a WHIP output here.

Returns​

string


refreshPeerToken()​

refreshPeerToken(roomId, peerId): Promise<string>

Defined in: js-server-sdk/src/client.ts:290

Refresh the peer token for an already existing peer. If an already created peer has not been connected to the room for more than 24 hours, the token will become invalid. This method can be used to generate a new peer token for the existing peer.

Parameters​

ParameterType
roomIdRoomId
peerIdPeerId

Returns​

Promise<string>

refreshed peer token


stopRecording()​

stopRecording(recordingId): Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>

Defined in: js-server-sdk/src/client.ts:436

Stop an active recording. Finalization is asynchronous: the recording stays active until the capture is finalized, then becomes finished. Stopping a recording that is no longer active is a no-op.

Parameters​

ParameterType
recordingIdRecordingId

Returns​

Promise<Override<Recording, { id: RecordingId; status: RecordingStatus; }>>


subscribePeer()​

subscribePeer(roomId, subscriberPeerId, publisherPeerId): Promise<void>

Defined in: js-server-sdk/src/client.ts:261

Subscribe a peer to another peer - this will make all tracks from the publisher available to the subscriber. Using this function only makes sense if subscribeMode is set to manual

Parameters​

ParameterType
roomIdRoomId
subscriberPeerIdPeerId
publisherPeerIdPeerId

Returns​

Promise<void>


subscribeTracks()​

subscribeTracks(roomId, subscriberPeerId, tracks): Promise<void>

Defined in: js-server-sdk/src/client.ts:273

Subscribe a peer to specific tracks from another peer - this will make only the specified tracks from the publisher available to the subscriber. Using this function only makes sense if subscribeMode is set to manual

Parameters​

ParameterType
roomIdRoomId
subscriberPeerIdPeerId
tracksTrackId[]

Returns​

Promise<void>