UNPKG

netflux

Version:

Peer to peer isomorphic transport API based on WebRTC and WebSocket. Allows to create/join full mesh network

84 lines (83 loc) 2.91 kB
import { Observable, Subject } from 'rxjs'; import { Channel } from './Channel'; import { IStream } from './misc/util'; import { IMessage, Message } from './proto/index'; import { ChannelBuilder } from './service/channelBuilder/ChannelBuilder'; import { ITopology, TopologyEnum } from './service/topology/Topology'; import { UserDataType, UserMessage } from './service/UserMessage'; import { Signaling, SignalingState } from './Signaling'; import { WebChannelState } from './WebChannelState'; import { WebSocketBuilder } from './WebSocketBuilder'; export interface IWebChannelOptions { topology?: TopologyEnum; signalingServer?: string; rtcConfiguration?: RTCConfiguration; autoRejoin?: boolean; } export declare const webChannelDefaultOptions: { topology: TopologyEnum; signalingServer: string; rtcConfiguration: { iceServers: { urls: string; }[]; }; autoRejoin: boolean; }; export interface InWcMsg extends Message { channel: Channel; } export declare type OutWcMessage = IMessage; export declare class WebChannel implements IStream<OutWcMessage, InWcMsg> { readonly STREAM_ID: number; members: number[]; topologyEnum: TopologyEnum; myId: number; key: string; autoRejoin: boolean; rtcConfiguration: RTCConfiguration; state: WebChannelState; onSignalingStateChange: (state: SignalingState) => void; onStateChange: (state: WebChannelState) => void; onMemberJoin: (id: number) => void; onMemberLeave: (id: number) => void; onMessage: (id: number, msg: UserDataType) => void; onMyId: (id: number) => void; webSocketBuilder: WebSocketBuilder; channelBuilder: ChannelBuilder; topology: ITopology; signaling: Signaling; userMsg: UserMessage; streamSubject: Subject<InWcMsg>; private _id; private idSubject; private _onAlone; private rejoinEnabled; private rejoinTimer; constructor(options: IWebChannelOptions); readonly onIdChange: Observable<number>; id: number; readonly messageFromStream: Observable<InWcMsg>; onAlone: () => void; sendOverStream(msg: OutWcMessage): void; join(key?: string): void; invite(url: string): void; leave(): void; send(data: UserDataType): void; sendTo(id: number, data: UserDataType): void; onMemberJoinProxy(id: number): void; onAdjacentMembersLeaveProxy(ids: number[]): void; onDistantMembersLeaveProxy(ids: number[]): void; init(key: string, id?: number): void; private clean; private setState; private setTopology; private subscribeToSignalingState; private subscribeToBrowserEvents; private startJoin; private rejoin; private reconnectToSignaling; private onBrowserBack; private onMemberLeaveProxy; private internalLeave; }