UNPKG

@loopeco/socketio

Version:

A enhanced LoopBack's WebSocket server based on socket.io

85 lines (84 loc) 2.73 kB
import { Application, Binding, BindingFilter, Constructor } from '@loopback/core'; import { HttpServer } from '@loopback/http-server'; import cors from 'cors'; import { Namespace, Server, ServerOptions, Socket } from 'socket.io'; import { BaseMiddlewareRegistry } from '@loopback/express'; import { SocketIoMetadata } from './decorators'; import { SocketIoConnectionContext } from './types'; export declare type SyncGetter<T> = () => T; export declare type SockIoNativeMiddleware = (socket: Socket, fn: (err?: any) => void) => void; export declare const getNamespaceKeyForName: (name: string) => string; /** * A binding filter to match socket.io controllers * @param binding - Binding object */ export declare const socketIoControllers: BindingFilter; export interface SocketIoServerOptions { httpServerOptions?: HttpServerResolvedOptions; socketIoOptions?: ServerOptions; } /** * A socketio server */ export declare class SocketIoServer extends BaseMiddlewareRegistry { app: Application; protected options: SocketIoServerOptions; readonly config: HttpServerResolvedOptions; private controllers; private ownedHttpServer; private attachedHttpServer; private readonly io; constructor(app: Application, options?: SocketIoServerOptions); get httpServer(): HttpServer; get listening(): boolean; get url(): string; /** * Register a sock.io middleware function * @param fn */ use(fn: SockIoNativeMiddleware): Server; /** * Register a socketio controller * @param controllerClass * @param meta */ route(controllerClass: Constructor<object>, meta?: SocketIoMetadata | string | RegExp): Server | Namespace; /** * Register a socket.io controller * @param controllerClass */ controller(controllerClass: Constructor<unknown>): Binding<unknown>; /** * Discover all socket.io controllers and register routes */ discoverAndRegister(): void; attach(httpServer: HttpServer | SyncGetter<HttpServer>): void; /** * Start the socketio server */ start(): Promise<void>; /** * Stop the socketio server */ stop(): Promise<void>; /** * Retrieve the middleware context from the socket * @param socket - Socket object */ getConnectionContext(socket: Socket): SocketIoConnectionContext | undefined; /** * Create socket handler from the controller class * @param controllerClass */ private createSocketHandler; } /** * Valid configuration for the HttpServer constructor. */ export interface HttpServerResolvedOptions { host?: string; port: number; path?: string; basePath?: string; cors: cors.CorsOptions; }