UNPKG

@bowbee/peer-lite

Version:

Lightweight WebRTC browser library that supports video, audio and data channels

79 lines (78 loc) 3.33 kB
import { PeerEvents, PeerOptions, TypedEmitter } from './types'; export default class Peer { private peer; private readonly streamLocal; private readonly channels; private readonly channelsPending; private readonly emitter; private polite; private isActive; private makingOffer; private ignoreOffer; private readonly options; /** Create a peer instance */ constructor(options?: PeerOptions); /** Initialize the peer */ init(): RTCPeerConnection; /** Start the RTCPeerConnection signalling */ start({ polite }?: { polite?: boolean | undefined; }): void; /** Process a RTCSessionDescriptionInit on peer */ signal(description: RTCSessionDescriptionInit): Promise<void>; /** Add RTCIceCandidate to peer */ addIceCandidate(candidate: RTCIceCandidate): Promise<void>; /** Send data to connected peer using an RTCDataChannel */ send(data: string | Blob | ArrayBuffer | ArrayBufferView, label?: string): boolean; /** Add RTCDataChannel to peer */ addDataChannel(label?: string, options?: RTCDataChannelInit): void; /** Get RTCDataChannel added to peer */ getDataChannel(label?: string): RTCDataChannel | undefined; private createDataChannels; private addDataChannelEvents; /** Close peer if active */ destroy(): void; /** Return the ICEConnectionState of the peer */ status(): RTCIceConnectionState; /** Return true if the peer is connected */ isConnected(): boolean; /** Return true if the peer is closed */ isClosed(): boolean; /** Return the RTCPeerConnection */ get(): RTCPeerConnection; /** Return the local stream */ getStreamLocal(): MediaStream; private error; private syncStreams; private syncChannels; /** Add stream to peer */ addStream(stream: MediaStream, replace?: boolean, stopTracks?: boolean): void; /** Remove stream from peer */ removeStream(stream: MediaStream, stopTracks?: boolean): void; /** Add track to peer */ addTrack(track: MediaStreamTrack): void; /** Remove track on peer */ removeTrack(track: MediaStreamTrack, stopTrack?: boolean): void; /** Remove tracks on peer */ removeTracks(tracks: MediaStreamTrack[], stopTracks?: boolean): void; /** Replace track with another track on peer */ replaceTrack(track: MediaStreamTrack, newTrack: MediaStreamTrack, stopOldTrack?: boolean): Promise<void>; on<E extends keyof PeerEvents>(event: E, listener: PeerEvents[E]): TypedEmitter<PeerEvents>; off<E extends keyof PeerEvents>(event: E, listener: PeerEvents[E]): TypedEmitter<PeerEvents>; offAll<E extends keyof PeerEvents>(event?: E): TypedEmitter<PeerEvents>; private emit; static getUserMedia(constraints?: MediaStreamConstraints): Promise<MediaStream>; /** Check if the current browser environment fully supports all required WebRTC features */ static checkBrowserSupport(): { supported: boolean; details: { [key: string]: boolean; }; }; /** Get information about the current browser's WebRTC implementation */ static getBrowserDetails(): { browser: string; version: number; isUnifiedPlan: boolean; }; }