UNPKG

imsdk-server-core

Version:

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

112 lines (111 loc) 2.79 kB
/** * 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; }