@bddh/starling-realtime-client
Version:
79 lines (78 loc) • 2.63 kB
TypeScript
/**
* @file lib/Server
* @description ws服务逻辑处理
* @author zhangyue49
*/
import { type WebSocketClient } from '@bddh/starling-web-socket/es/interface';
import { CallbackMsgType, ConnectDataType, ConnectParamsType } from './interface';
export interface SteamDataType {
first: boolean;
last: boolean;
audio?: string;
body?: string;
}
export interface DHServerInterface {
action: string;
requestId: string;
clientTs: number;
body: string | ArrayBuffer;
}
export interface DHErrServerInterface {
action: string;
requestId: string;
code?: number;
message?: string;
error: Error;
}
type ConnectListener = (data: ConnectDataType, off?: () => void) => void;
export interface createSocketParamsType {
token?: string;
appKey?: string;
appId?: string;
sessionId?: string;
parameters?: ConnectParamsType;
reConnect?: boolean;
onConnect?: ConnectListener;
onDigitalHumanCallback?: (data: CallbackMsgType) => void;
}
export interface RenderCallbackRes {
requestId: string;
action: string;
code: number;
body: string | null;
message: string;
}
interface ServerOptions {
checkHeartbeatMismatch?: boolean;
emitRawStatusMessage?: boolean;
}
export type RenderCallback = (res: RenderCallbackRes) => void;
export declare const CONNECTING_STUCK_MS_DEFAULT: number;
declare class Server {
dhServerSocket: WebSocketClient | null;
preConnectSuccess: boolean;
connectParams: createSocketParamsType | null;
private socketClosingPromise;
private readonly url;
private firstConnect;
private connectingTimer;
private readonly connectingMs;
private lastPreOpen;
private reconnectingTimeout;
private lastReportedReadyState;
private lastHbAckTs;
private readonly checkHeartbeatMismatch;
private emitRawStatusMessage;
constructor(url: string, options?: ServerOptions);
setEmitRawStatusMessage(value: boolean): void;
sendPreConnect: (props: createSocketParamsType, resolve?: ((value: any) => void) | undefined) => void;
createSocket: (props: createSocketParamsType, isPreOpenSession?: boolean) => Promise<WebSocketClient | null>;
sendConnect: (props: createSocketParamsType) => void;
closeSocket: () => Promise<void>;
handleConnect: () => Promise<void>;
sendMessage(message: DHServerInterface | ArrayBuffer, listener: RenderCallback | null): Promise<void>;
private startConnectingWatch;
private clearConnectingWatch;
private resetState;
}
export default Server;