async getNativeRtpCapabilities() { logger.debug('getNativeRtpCapabilities()'); const sdp = await this._channel.request('getRtpCapabilities'); const sdpObject = sdpTransform.parse(sdp); const caps = sdpCommonUtils.extractRtpCapabilities({ sdpObject }); return caps; }
// NOTE: Just 'arraybuffer' is valid for Node.js. set binaryType(value: string) { logger.warn('binaryType setter not implemented, using "arraybuffer"'); }
/** * Expose Worker factory. */ async function createWorker({ logLevel = 'error' } = {}) { logger.debug('createWorker()'); const worker = new Worker_1.Worker({ logLevel }); return new Promise((resolve, reject) => { worker.on('@success', () => resolve(worker)); worker.on('@failure', reject); }); }
close() { logger.debug('close()'); if (this._closed) return; this._closed = true; // Deregister sending tracks events and emit 'ended' in remote tracks. for (const track of this._mapLocalIdTracks.values()) { if (track.data.remote) track.remoteStop(); } // Remove notification subscriptions. this._channel.removeAllListeners(this._internal.handlerId); // If running notify the worker. if (this._running) this._channel.notify('handler.close', this._internal); // Tell the parent. this.emit('@close'); }
/** * Create a mediasoup-client HandlerFactory. */ createHandlerFactory() { logger.debug('createHandlerFactory()'); return () => { const internal = { handlerId: uuid_1.v4() }; const handler = new Handler_1.Handler({ internal, channel: this._channel }); this._handlers.add(handler); handler.on('@close', () => this._handlers.delete(handler)); return handler; }; }
async getNativeSctpCapabilities() { logger.debug('getNativeSctpCapabilities()'); return { numStreams: SCTP_NUM_STREAMS }; }
/** * Create a AiortcMediaStream with audio/video tracks. */ async getUserMedia(constraints) { logger.debug('getUserMedia() [constraints:%o]', constraints); return media.getUserMedia(this._channel, constraints); }
/** * Create a mediasoup-client HandlerFactory. */ createHandlerFactory(): HandlerFactory { logger.debug('createHandlerFactory()'); return (): Handler => { const internal = { handlerId: uuidv4() }; const handler = new Handler( { internal, channel : this._channel }); this._handlers.add(handler); handler.on('@close', () => this._handlers.delete(handler)); return handler; }; }
async dump() { logger.debug('dump()'); return this._channel.request('dump'); }
async getNativeSctpCapabilities(): Promise<SctpCapabilities> { logger.debug('getNativeSctpCapabilities()'); return { numStreams : SCTP_NUM_STREAMS }; }
async dump(): Promise<any> { logger.debug('dump()'); return this._channel.request('dump'); }
async getNativeRtpCapabilities(): Promise<RtpCapabilities> { logger.debug('getNativeRtpCapabilities()'); const sdp = await this._channel.request('getRtpCapabilities'); const sdpObject = sdpTransform.parse(sdp); const caps = sdpCommonUtils.extractRtpCapabilities({ sdpObject }); return caps; }
/** * Create a AiortcMediaStream with audio/video tracks. */ async getUserMedia( constraints: media.AiortcMediaStreamConstraints ): Promise<AiortcMediaStream> { logger.debug('getUserMedia() [constraints:%o]', constraints); return media.getUserMedia(this._channel, constraints); }
// NOTE: Just 'arraybuffer' is valid for Node.js. set binaryType(value) { logger.warn('binaryType setter not implemented, using "arraybuffer"'); }
/** * Expose Worker factory. */ export async function createWorker( { logLevel = 'error' }: WorkerSettings = {} ): Promise<Worker> { logger.debug('createWorker()'); const worker = new Worker({ logLevel }); return new Promise((resolve, reject) => { worker.on('@success', () => resolve(worker)); worker.on('@failure', reject); }); }