UNPKG

netflux

Version:

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

51 lines (50 loc) 1.98 kB
import { Observable } from 'rxjs'; import { Channel } from '../Channel'; import { IStream } from '../misc/util'; import { InSigMsg, OutSigMsg } from '../Signaling'; import { InWcMsg, OutWcMessage, WebChannel } from '../WebChannel'; export interface IMessageFactory<OutMsg, InMsg extends OutMsg> { create: (properties?: OutMsg) => InMsg; encode: (message: OutMsg) => { finish: () => Uint8Array; }; decode: (reader: Uint8Array) => InMsg; } export interface IWebChannelStream<OutMsg, InMsg> { id: number; message: Observable<{ senderId: number; msg: InMsg; channel: Channel; recipientId: number; }>; send: (msg: Uint8Array | OutMsg, recipientId: number) => void; } export interface ISignalingStream<OutMsg, InMsg> { id: number; message: Observable<{ senderId: number; recipientId: number; msg: InMsg; }>; send: (msg: Uint8Array | OutMsg, recipientId: number, senderId: number) => void; } export interface IAllStreams<OutMsg, InMsg> { message: Observable<{ streamId: number; senderId: number; recipientId: number; msg: InMsg; }>; sendOver: (streamId: number, msg: Uint8Array | OutMsg, recipientId: number, senderId: number) => void; } export declare abstract class Service<OutMsg, InMsg extends OutMsg> { private serviceId; private proto; constructor(serviceId: number, proto: IMessageFactory<OutMsg, InMsg>); protected useWebChannelStream(wc: IStream<OutWcMessage, InWcMsg> & WebChannel): IWebChannelStream<OutMsg, InMsg>; protected useSignalingStream(sig: IStream<OutSigMsg, InSigMsg>): ISignalingStream<OutMsg, InMsg>; protected useAllStreams(wc: IStream<OutWcMessage, InWcMsg> & WebChannel, sig: IStream<OutSigMsg, InSigMsg>): IAllStreams<OutMsg, InMsg>; protected encode(msg: OutMsg): Uint8Array; protected decode(bytes: Uint8Array): InMsg; }