imsdk-server-core
Version:
轻量级Web服务器框架、WebSocket服务器框架。采用Typescript编写,简单易用。
217 lines (216 loc) • 7.98 kB
TypeScript
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;
}