UNPKG

@cloudpss/ubrpc

Version:

52 lines 2.63 kB
import { RpcSocket } from './socket.js'; import type { ConnectionID, RpcMetadata } from './types/payload.js'; import type { RpcObject } from './types/utils.js'; declare const kOnClose: unique symbol; declare const kReplaceSocket: unique symbol; /** * 客户端认证方法 * @param metadata 客户端传入的认证元数据 * @param id 客户端连接 ID * @param client 已存在的客户端连接对象(断线重连时会传入) * @returns 服务端返回客户端的认证元数据 * @throws {unknown} 认证失败时抛出异常 */ type RpcClientAuthenticator<TRemote extends object, TLocal extends object> = (metadata: RpcMetadata, id: ConnectionID, client: RpcServerSocket<TRemote, TLocal> | undefined) => RpcMetadata | Promise<RpcMetadata>; /** 由 WS Server 建立的 RPC 连接组 */ export declare class RpcServer<TRemote extends object, TLocal extends object> { /** 客户端认证方法 */ readonly authenticator: RpcClientAuthenticator<TRemote, TLocal>; constructor( /** 服务端 RPC 实现 */ local?: RpcObject<TLocal> | ((socket: RpcServerSocket<TRemote, TLocal>) => RpcObject<TLocal>), /** 客户端认证方法 */ authenticator?: RpcClientAuthenticator<TRemote, TLocal>); /** 用于响应调用的本地对象 */ readonly local?: (socket: RpcServerSocket<TRemote, TLocal>) => RpcObject<TLocal>; /** 已建立连接的客户端 */ protected readonly _sockets: Map<ConnectionID, RpcServerSocket<TRemote, TLocal>>; /** 已建立连接的客户端 */ get sockets(): ReadonlyMap<ConnectionID, RpcServerSocket<TRemote, TLocal>>; /** WebSocket 连接后调用此方法建立 RPC 连接 */ connect(socket: WebSocket): Promise<RpcServerSocket<TRemote, TLocal>>; /** 认证客户端 */ protected authSocket(socket: WebSocket, tempId: string): Promise<[ConnectionID, RpcMetadata, RpcServerSocket<TRemote, TLocal> | undefined]>; private readonly disconnectingSockets; /** WebSocket 断开时调用 */ private [kOnClose]; } /** 由 WS Server 建立的 RPC 连接 */ export declare class RpcServerSocket<TRemote extends object, TLocal extends object> extends RpcSocket<TRemote, TLocal> { readonly server: RpcServer<TRemote, TLocal>; constructor(id: ConnectionID, server: RpcServer<TRemote, TLocal>); /** @inheritdoc */ protected authSocket(): Promise<RpcMetadata>; /** @inheritdoc */ protected get local(): RpcObject<TLocal> | undefined; /** @inheritdoc */ protected onClose(ev: CloseEvent): void; /** 替换 socket */ private [kReplaceSocket]; } export {}; //# sourceMappingURL=server.d.ts.map