UNPKG

vroom-web-sdk-beta

Version:

VROOM SDK (beta) by True Virtual World

63 lines (53 loc) 1.7 kB
import EventEmitter from 'events' import { Mixin } from 'ts-mixer' import ConfigurationBase from './configuration.base' import { ConfigurationType } from '../types/vroomSDK.base' import HelperFunction from './helper.function' import { JoinResponseType } from '../types/message' import VroomParticipant from '../types/publisher' import VroomVideoPlugin from '../plugins/vroom-video.plugin' export default class SdkBase extends Mixin ( EventEmitter, ConfigurationBase, HelperFunction ) { public wsConn: WebSocket | any public mapTransactions: Map<any, any> public canJoin: boolean = false public streams: any[] = [] public joined: boolean = false public attendees: any[] = [] public roomId: number = 0 constructor(config: ConfigurationType) { super(config) this.mapTransactions = new Map() } public async joinStart( pub: VroomVideoPlugin, sub: VroomVideoPlugin, stream: MediaStream, audio: boolean, video: boolean, canJoin: boolean, config: ConfigurationType ): Promise<void | JoinResponseType> { if (!canJoin) return if (this.joined) return pub.opaqueId = 'pub-' + this.opaqueId sub.opaqueId = 'sub-' + this.opaqueId await pub.attachPlugin() await sub.attachPlugin() const roomId = this.getRoomIdFromUrl(config.endpoint) if (roomId && config.displayName) { this.joined = true return await pub.joinRoom(stream, roomId, config.displayName, !audio, !video) } } public async receivePublisher(sub: VroomVideoPlugin, publisher: VroomParticipant[], privateId: number) { try { await sub?.receive(publisher, privateId) } catch (e) { console.error(e) } } }