UNPKG

ssocket

Version:

仿 Koa 中间件控制的 WebSocket 服务

121 lines (120 loc) 3.09 kB
/// <reference types="node" /> import { SWebSocket } from "./client"; import { RedisOptions } from "ioredis"; import { EventEmitter } from 'events'; /**配置 */ export interface Options { redis?: RedisOptions; mqurl?: string; requestsTimeout?: number; key?: string; [key: string]: any; } export declare class Adapter extends EventEmitter { private opt; readonly uid: string; readonly requestsTimeout: number; private readonly clients; private readonly rooms; private readonly client2rooms; private readonly channel; private readonly requests; private readonly cluster; private readonly msgbuffers; private survivalid; /**检查通道可用性 */ private checkchannelid; private ispublish; constructor(opt: Options); init(): Promise<void>; private checkChannel; private sendCheckChannel; private survivalHeartbeat; /**获取所有存活主机的数量 */ private allSurvivalCount; private startPublish; private publish; private onmessage; private emitSocketMessage; /** * 获取一个 Socket 客户端对象 * @param id */ get(id: string): SWebSocket; /** * 增加一个 Socket 连接 * @param {*} id * @param {*} socket */ set(socket: SWebSocket): SWebSocket; /** * 删除一个 Socket 连接 * @param {*} id */ delete(id: string): void; /** * 加入房间 * @param id * @param room */ join(id: string, room: string): void; /** * 离开房间 * @param id * @param room */ leave(id: string, room: string): void; /** * 获取所有的房间号 */ getRoomall(): Promise<string[]>; /** * 根据房间号获取所有的客户端ID * @param room */ getClientidByroom(room: string): Promise<string[]>; /** * 根据 客户端ID 获取所在的所有房间ID * @param id */ getRoomidByid(id: string): Promise<string[]>; /** * 判断客户端是否存在啊某个房间 * @param id * @param room */ hasRoom(id: string, room: string): Promise<boolean>; /** * 获取所有的房间总数 */ getAllRoomcount(): Promise<number>; /** * 获取房间内人员数量 * @param room */ getRoomsize(room: string): Promise<number>; /** * 发送房间消息 * @param room * @param event * @param data * @param status * @param msg */ sendRoomMessage(room: string, event: string, data: any, status?: number, msg?: string): Promise<void>; /** * 发送广播消息 * @param event * @param data * @param status * @param msg */ sendBroadcast(event: string, data: any, status?: number, msg?: string): Promise<void>; /** * 发送终端消息 * @param {*} id Socket sid * @param {*} type 消息类型 * @param {*} data */ sendSocketMessage(id: string, event: string, data: any, status?: number, msg?: string): Promise<void>; }