Function consumerResume

Resumes a media consumer by handling the provided track and updating the relevant parameters.

This function is a key part of the MediaSFU stream management pipeline and is a common candidate for override via uiOverrides.consumerResume. Use the wrap pattern to inject analytics, rate-limiting, or error handling without touching core logic.

Will throw an error if the resumption fails or if there is an issue with the parameters.

// Direct usage

await consumerResume({
track: mediaStreamTrack,
remoteProducerId: 'producer-id',
params: { id: 'consumer-id', producerId: 'producer-id', kind: 'audio', rtpParameters: {} },
consumer: consumerInstance,
parameters: { ...allParams },
nsock: socketInstance,
});

// Override via uiOverrides (add analytics)

const uiOverrides: MediasfuUICustomOverrides = {
consumerResume: {
wrap: (original) => async (options) => {
const start = performance.now();
await original(options);
analytics.track('consumer_resume', {
durationMs: performance.now() - start,
consumerId: options.consumer.id,
});
},
},
};

// Full parameters object structure

const parameters: ConsumerResumeParameters = {
nStream: null,
allAudioStreams: [],
allVideoStreams: [],
streamNames: [],
audStreamNames: [],
updateMainWindow: false,
shared: false,
shareScreenStarted: false,
participants: [],
eventType: 'conference',
meetingDisplayType: 'video',
mainScreenFilled: false,
first_round: false,
lock_screen: false,
oldAllStreams: [],
adminVidID: null,
mainHeightWidth: 0,
member: 'John Doe',
audioOnlyStreams: [],
gotAllVids: false,
defer_receive: false,
firstAll: false,
remoteScreenStream: [],
hostLabel: 'host',
whiteboardStarted: false,
whiteboardEnded: false,
updateUpdateMainWindow: (value) => { console.log('updated')},
updateAllAudioStreams: (streams) => { console.log('updated')},
updateAllVideoStreams: (streams) => { console.log('updated')},
updateStreamNames: (streams) => { console.log('updated')},
updateAudStreamNames: (streams) => { console.log('updated')},
updateNStream: (stream) => { console.log('updated')},
updateMainHeightWidth: (value) => { console.log('updated')},
updateLock_screen: (value) => { console.log('updated')},
updateFirstAll: (value) => { console.log('updated')},
updateRemoteScreenStream: (streams) => { console.log('updated')},
updateOldAllStreams: (streams) => { console.log('updated')},
updateAudioOnlyStreams: (streams) => { console.log('updated')},
updateShareScreenStarted: (value) => { console.log('updated')},
updateGotAllVids: (value) => { console.log('updated')},
updateScreenId: (id) => { console.log('updated')},
updateDefer_receive: (value) => { console.log('updated')},
reorderStreams: (params) => { console.log('reordered') }
prepopulateUserMedia: (params) => { console.log('prepopulated') },
},
nsock: socketInstance,
};

consumerResume(options)
.then(() => {
console.log('Consumer resumed successfully');
})
.catch((error) => {
console.error('Error resuming consumer:', error);