UNPKG

imsdk-server-core

Version:

轻量级Web服务器框架、WebSocket服务器框架。采用Typescript编写,简单易用。

217 lines (216 loc) 7.98 kB
export declare type WssBridgeListenerDecoder = (packData: WssBridgePackData) => any; export declare type WssBridgeListenerCallback = (message: any, params?: any[]) => void; export declare type WssBridgeRequestCallback = (resp: WssBridgeResponse, params?: any[]) => void; export declare type WssBridgeOnopen = (params?: any[]) => void; export declare type WssBridgeOnclose = (code: number, reason: string, params?: any[]) => void; export declare type WssBridgeOnerror = (error: any, params?: any[]) => void; export declare type WssBridgeOnretry = (count: number, params?: any[]) => void; export declare type WssBridgeOnsecond = (second: number, delay: number, params?: any[]) => void; export declare class WssBridgePackData { /** * 路由 */ static readonly ROUTE_HEARTICK = "$heartick$"; static readonly ROUTE_RESPONSE = "$response$"; /** * 状态 * 本框架保留状态码: * 4001-4100 服务端保留状态码范围 * 4101-4200 客户端保留状态码范围 * 4201-4999 可自定义的状态码范围 */ static readonly CODE_RETRY: { code: number; data: string; }; static readonly CODE_CLOSE: { code: number; data: string; }; static readonly CODE_ERROR: { code: number; data: string; }; static readonly CODE_CALL: { code: number; data: string; }; route: string; reqId: number; message: any; /** * @param route 路由 * @param reqId 请求序号 * @param message 报文数据 */ constructor(route: string, reqId: number, message: any); /** * 将数据包进行序列化,采用随机生成iv和key的AES加密算法,CBC、Pkcs7 * @param pack 要序列化的数据包 * @param pwd 加密的密码 * @param binary 是否返回二进制结果,设置了pwd时生效 */ static serialize(pack: WssBridgePackData, pwd: string, binary: boolean): ArrayBuffer | string; /** * 将收到的数据进行反序列化,采用随机生成iv和key的AES解密算法,CBC、Pkcs7 * @param data 要解密的数据 * @param pwd 解密的密码 */ static deserialize(data: ArrayBuffer | string, pwd: string): WssBridgePackData; /** * 计算md5编码 * @param data 要计算编码的字符串 */ static getMd5(data: string): string; } export declare class WssBridgeListener { once: boolean; onmessage: WssBridgeListenerCallback; context: any; params: any[]; constructor(once: boolean, onmessage: WssBridgeListenerCallback, context?: any, params?: any[]); callMessage(message: any): void; } export declare class WssBridgeRequest { time: number; onsuccess: WssBridgeRequestCallback; onerror: WssBridgeRequestCallback; context: any; params: any[]; constructor(onsuccess?: WssBridgeRequestCallback, onerror?: WssBridgeRequestCallback, context?: any, params?: any[]); callSuccess(resp: WssBridgeResponse): void; callError(resp: WssBridgeResponse): void; } export declare class WssBridgeResponse { code: number; data: any; constructor(code: number, data: any); get ok(): boolean; } export declare class WssBridge { static readonly LOG_LEVEL_ALL = 1; static readonly LOG_LEVEL_DATA = 2; static readonly LOG_LEVEL_INFO = 3; static readonly LOG_LEVEL_NONE = 4; private _host; private _pwd; private _binary; private _timeout; private _heartick; private _conntick; private _timer; private _timerInc; private _reqIdInc; private _netDelay; private _retryCnt; private _listeners; private _requests; private _logLevel; private _socket; private _paused; private _expired; private _listenerDecoder; private _listenerContext; private _onopen; private _onclose; private _onerror; private _onretry; private _onsecond; private _context; private _params; /** * @param host 服务器地址(http://、https://、ws://、wss://) * @param pwd 数据加解密密码 * @param binary 是否用二进制传输 * @param timeout 请求超时(毫秒) * @param heartick 心跳间隔(秒) * @param conntick 重连间隔(秒) */ constructor(host: string, pwd: string, binary: boolean, timeout?: number, heartick?: number, conntick?: number); private onSocketOpen; private onSocketMessage; private onSocketClose; private onSocketError; private onTimerTick; private sendPackData; private readPackData; private printPackData; private safeOpen; private safeClose; /** * 开始进行网络连接 * @param onopen 网络连接建立时的回调 * @param onclose 网络连接关闭时的回调(包括手动关闭、服务端关闭等情况) * @param onerror 网络连接发生错误时的回调 * @param onretry 网络连接断开,自动重连时的回调 * @param onsecond 此函数每秒回调一次,回调参数中包含网络延迟等信息 * @param context 触发回调函数时的绑定的上下文信息 * @param params 触发回调函数时会传回这个参数 */ connect(onopen: WssBridgeOnopen, onclose: WssBridgeOnclose, onerror: WssBridgeOnerror, onretry: WssBridgeOnretry, onsecond: WssBridgeOnsecond, context?: any, params?: any[]): void; /** * 强制关闭网络连接,并销毁这个实例 * 注意:调用此函数后,此实例不可继续做网络操作,不可重新连接网络。 */ disconnect(): void; /** * 向远程服务器发起请求 * @param route 远程服务器路由地址 * @param message 数据包 * @param onsuccess 请求成功的回调 * @param onerror 请求失败的回调 * @param context 触发回调函数时的绑定的上下文信息 * @param params 触发回调函数时会传回这个参数 */ request(route: string, message: any, onsuccess?: WssBridgeRequestCallback, onerror?: WssBridgeRequestCallback, context?: any, params?: any[]): void; /** * 添加指定route的监听器,可用作自由定义事件的管理器 * @param route 网络路由名称、本地自定义事件名称 * @param once 是否触发一次后,自动删除此路由 * @param onmessage 触发时的回调 * @param context 触发回调函数时的绑定的上下文信息 * @param params 触发回调函数时会传回这个参数 */ addListener(route: string, once: boolean, onmessage: WssBridgeListenerCallback, context?: any, params?: any[]): void; /** * 删除指定route的监听器 * @param route 网络路由名称、本地自定义事件名称 * @param onmessage 要删除的监听器。不传这个参数则删除route对应的全部路由 */ removeListener(route: string, onmessage?: WssBridgeListenerCallback): void; /** * 设置监听器的前置解码器,该解码器将在addListener设置的监听器回调之前调用 * * @param listenerDecoder 自定义解码器 */ setListenerDecoder(listenerDecoder: WssBridgeListenerDecoder, listenerContext?: any): void; /** * 手动触发pack.route对应的全部监听器 * @param pack 路由包装实例 */ triggerEvent(pack: WssBridgePackData): void; /** * 暂停断线自动重连的功能 */ pauseReconnect(): void; /** * 恢复断线自动重连的功能 */ resumeReconnect(): void; /** * 设置调试日志输出级别 * @param level 日志级别,有效值为 WssBridge.LOG_LEVEL_XXX */ setLogLevel(level: number): void; /** * 获取当前网络延迟毫秒 */ getNetDelay(): number; /** * 是否已经建立网络连接 */ isConnected(): boolean; /** * 是否为服务端node环境 */ isNative(): boolean; }