import axon from "axon"; //#region src/server.d.ts interface JwtLike { verify(token: string, pk: string): Promise; decode(token: string): { iss: string; }; } interface ServerOptions { jwt?: JwtLike; } interface SocketWithChannel { channel?: string; writable: boolean; write(buf: Buffer): void; _peername?: { family: string; address: string; port: number; }; } interface RouteHandler { fn: (payload: unknown, ctx: { sock: SocketWithChannel; channel?: string; event: string; server: Server; }) => unknown | Promise; authRequired: boolean; } declare class Server extends axon.Socket { jwt: JwtLike; handlers: Map; socks: SocketWithChannel[]; constructor(opts?: ServerOptions); onmessage(sock: SocketWithChannel): (buf: Buffer) => void; send(event: string, data: unknown, channel: string): this; /** * 注册路由 * @param {string} event * @param {(payload:any, ctx:{sock:any, channel?:string, event:string, server:Server})=>any|Promise} handler * @param {{authRequired?: boolean}} [opts] - 默认 true;设为 false 则该事件免鉴权 */ register(event: string, handler: (payload: unknown, ctx: { sock: SocketWithChannel; channel?: string; event: string; server: Server; }) => unknown | Promise, opts?: { authRequired?: boolean; }): this; } //#endregion export { Server as default };