imsdk-server-core
Version:
轻量级Web服务器框架、WebSocket服务器框架。采用Typescript编写,简单易用。
112 lines (111 loc) • 2.79 kB
TypeScript
/**
* ws的WebSocket封装类
* ws相关信息:https://github.com/websockets/ws
*/
import WebSocket from 'ws';
import type { ObjectId } from 'mongodb';
export interface WssUIDLike {
toString(): string;
}
export declare class WssSession {
private static _increment;
private _id;
private _socket;
private _ip;
private _uid;
private _context;
private _channel;
private _reqIdList;
private _lastHeart;
/**
* @param socket
* @param ip
*/
constructor(socket: WebSocket, ip: string);
/**
* 使用WebSocket发送数据
* @param data 要发送的数据
* @param options 具体属性参考依赖库 https://github.com/expressjs/multer
* @param cb 发送后的回调
*/
send(data: any, options?: {
mask?: boolean;
binary?: boolean;
compress?: boolean;
fin?: boolean;
}, cb?: (error?: Error) => void): boolean;
/**
* 关闭WebSocket
* 本框架保留状态码:
* 4001-4100 服务端保留状态码范围
* 4101-4200 客户端保留状态码范围
* 4201-4999 可自定义的状态码范围
* 更多状态码资料参考: https://tools.ietf.org/html/rfc6455#section-7.4.2 和 https://github.com/websockets/ws/issues/715
* @param code
* @param reason
*/
close(code: number, reason: string): void;
/**
* 绑定用户ID
* @param uid
*/
bindUid(uid: WssUIDLike): void;
/**
* 解绑用户ID
*/
unbindUid(): void;
/**
* 缓存键值对数据
* @param key
* @param value
*/
setContext(key: string, value: any): void;
/**
* 读取键值对数据
* @param key
*/
getContext(key: string): any;
/**
* 删除键值对数据
* @param key
*/
delContext(key: string): void;
/**
* 加入指定推送组
* @param gid
*/
joinChannel(gid: WssUIDLike): void;
/**
* 退出指定推送组
* @param gid
*/
quitChannel(gid: WssUIDLike): void;
/**
* 遍历已加入的全部推送组
* @param callback
*/
eachChannel(callback: (gid: WssUIDLike) => void): void;
/**
* 更新流量统计信息,同时返回是否收到重复包
* @param reqId 请求id
* @param cacheSize 缓存reqId数量上限
*/
updateReqId(reqId: number, cacheSize: number): boolean;
/**
* 更新最近收到心跳包的时间
*/
updateHeart(): void;
/**
* 是否绑定了UID
*/
isBinded(): boolean;
/**
* 是否已经超时未收到心跳包
* @param timeout
*/
isExpired(timeout: number): boolean;
get id(): number;
get ip(): string;
get uid(): WssUIDLike;
get ouid(): ObjectId;
}