UNPKG

vue-peer

Version:

With this package, you can have video calls along with two or multi-person chat communication. You can easily bind and display your streams in any video element you want.

44 lines (43 loc) 1.43 kB
import { DataConnection, MediaConnection } from "peerjs"; export interface MessageType<Metadata> { fromMetadata?: MetadataType<Metadata>; to?: string; } export interface MetadataUser { user: string; } export type MetadataType<T> = T & { user: string; }; export interface VuePeerConnection<T> extends VuePeerStream<T> { user: string; conn?: DataConnection; call?: MediaConnection; } export type VuePeerStream<T> = { id: string; regAt: number; stream?: MediaStream; metadata: MetadataType<T>; }; export declare enum VuePeerSocketEvent { MESSAGE = "message", LOCAL_VIDEO = "local_video", USER_JOINED = "user_joined", ON_ACCEPTED = "on_accepted", ERROR_IN_PEER = "error_in_peer", ERROR_IN_SOCKET = "error_in_socket", ERROR_IN_NAVIGATOR = "error_in_navigator" } export type MessageEvent<T> = (data: T) => void; export type UserJoinedEvent<T> = (sessions: Array<VuePeerStream<T>>) => void; export type LocalVideoEvent = (stream: MediaStream) => void; export type ErrorEvent = (err: Error) => void; export type AcceptedEvent<T> = (metadata: MetadataType<T>) => boolean; export type VuePeerEvent<TMetadata, TMessage> = MessageEvent<TMessage> | UserJoinedEvent<TMetadata> | AcceptedEvent<TMetadata> | LocalVideoEvent | ErrorEvent; export interface VuePeerOption<T> { socketUrl: string; room: string; metadata: MetadataType<T>; showLogs?: boolean; }