@skyway-sdk/core
Version:
The official Next Generation JavaScript SDK for SkyWay
63 lines • 2.82 kB
TypeScript
import { Event } from '@skyway-sdk/common';
import type { SkyWayContext } from '../../../../context';
import type { AnalyticsSession } from '../../../../external/analytics';
import type { IceManager } from '../../../../external/ice';
import type { SignalingSession } from '../../../../external/signaling';
import type { LocalPersonImpl } from '../../../../member/localPerson';
import type { RemoteMember } from '../../../../member/remoteMember';
import type { P2PMessage } from '.';
export declare abstract class Peer {
protected readonly _context: SkyWayContext;
protected readonly _iceManager: IceManager;
protected readonly signaling: SignalingSession;
protected readonly analytics: AnalyticsSession | undefined;
protected readonly localPerson: LocalPersonImpl;
protected readonly endpoint: RemoteMember;
readonly role: PeerRole;
private _pendingCandidates;
readonly pc: RTCPeerConnection;
readonly onSignalingStateChanged: Event<RTCSignalingState>;
readonly onPeerConnectionStateChanged: Event<RTCPeerConnectionState>;
readonly onDisconnect: Event<void>;
connected: boolean;
disconnected: boolean;
rtcPeerConnectionId: string;
constructor(_context: SkyWayContext, _iceManager: IceManager, signaling: SignalingSession, analytics: AnalyticsSession | undefined, localPerson: LocalPersonImpl, endpoint: RemoteMember, role: PeerRole);
private setPeerConnectionListener;
protected unSetPeerConnectionListener(): void;
private _onICECandidate;
private _onICECandidateError;
private _onIceGatheringStateChange;
private _onConnectionStateChange;
private _onIceConnectionStateChange;
private _onSignalingStateChange;
handleCandidate(candidate: RTCIceCandidate): Promise<void>;
resolveCandidates(): Promise<void>;
/**@throws {@link SkyWayError} */
protected waitForSignalingState: (state: RTCSignalingState, timeout?: number) => Promise<void>;
/**@throws {@link SkyWayError} */
protected waitForConnectionState: (state: RTCPeerConnectionState, timeout?: number) => Promise<void>;
/**@throws {@link SkyWayError} */
protected waitForStats: ({ track, cb, interval, timeout, logging, }: {
track: MediaStreamTrack;
cb: (stats: {
[key: string]: any;
id: string;
type: string;
}[]) => boolean;
/**ms */
interval?: number | undefined;
/**ms */
timeout?: number | undefined;
logging?: boolean | undefined;
}) => Promise<void>;
}
export declare type PeerRole = 'sender' | 'receiver';
export interface IceCandidateMessage extends P2PMessage {
kind: 'iceCandidateMessage';
payload: {
candidate: RTCIceCandidate;
role: 'receiver' | 'sender';
};
}
//# sourceMappingURL=peer.d.ts.map