import { ActionType, IPosition, OperateType } from "./const"; export type PeerType = 'text' /** * videoElement: 用来展示画面的video元素 * videoElement: 用来辅助粘贴的text input元素 * wsAddress: websocket信令地址 * buildMediaOfferMessage: 用来构造Media Offer信息的模版函数 * buildMediaCandidateMessage: 用来构造Media Candidate信息的模版函数 * buildJoinRoomMessage: 用来构造JoinRoom信息的模版函数 * getMessageType: 用于从信令信息中解析消息类型的函数 * hooksOnSignalMessage: 信令服务器收到所有消息后的回调,可以在这里根据收到的信令消息自定义行为 * initPeerCase?: 可选, 标志可以开始初始化PeerConnection的判断函数, 默认为判断message-type是否等于roomStuats * answerType?: 可选, 标志是对等方Sdp的消息类型, 默认为answer * candidateType?: 可选, 标志是对等方Candiadte的消息类型, 默认为candidate * keyFrame?: 可选, 请求关键帧,如果需要可以设置 * iceConfig?: 可选, 用于配置PeerConnection的ICE配置 * peerType?: 可选,用于配置需要额外创建的PeerConenction类型,默认只创建media类型 * buildTextOfferMessage?: 可选, 用来构造Text Offer信息的模版函数 * buildTextCandidateMessage?: 可选, 用来构造Text Candidate信息的模版函数 */ export interface IRealtimePlayer { videoElement: HTMLVideoElement; textHelperElement: HTMLInputElement; imageElement?: HTMLImageElement; imageWS?: string; wsAddress: string; videoMode: string; buildMediaOfferMessage: (desc: RTCSessionDescriptionInit) => any; buildMediaCandidateMessage: (candidate: any) => any; buildTextOfferMessage?: (desc: RTCSessionDescriptionInit) => any; buildTextCandidateMessage?: (candidate: any) => any; buildJoinRoomMessage: () => any; getMessageType: (msg: string) => { type: string, payload: any, toPeerType: string }; hooksOnSignalMessage: (parsed: { type: string; payload: Record }) => void; hooksOnSignalOpen?:() => void; hooksOnSignalClose?:() => void; initPeerCase?: (parsed: { type: string; payload: Record }) => boolean; answerType?: string; candidateType?: string; keyFrame?: any; iceConfig?: RTCConfiguration; peerType: PeerType[]; heartBeatMsg?: any; heartBeatInterval?: number; isPC?: boolean; } export interface ICtrlMsg { type: OperateType; action?: ActionType; position?: IPosition; pointerId?: number; pressure?: number; buttons?: number; keyCode?: number; metaState?: number; repeat?: number; hScroll?: number; vScroll?: number; text?: string; paste?: boolean; } export type IWebrtcMediaStreamSimple = Pick export type IWebrtcTextSimple = Pick