@loopback/socketio
Version:
LoopBack's WebSocket server based on socket.io
73 lines (72 loc) • 2.54 kB
TypeScript
import { Application, Binding, BindingFilter, Constructor, Context } from '@loopback/core';
import cors from 'cors';
import { Server, ServerOptions, Socket } from 'socket.io';
import { SocketIoMetadata } from './decorators';
export type SockIOMiddleware = (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 Context {
app: Application;
protected options: SocketIoServerOptions;
private controllers;
private httpServer;
private readonly io;
readonly config: HttpServerResolvedOptions;
constructor(app: Application, options?: SocketIoServerOptions);
get listening(): boolean;
/**
* Register a sock.io middleware function
* @param fn
*/
use(fn: SockIOMiddleware): Server<import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, any>;
get url(): string;
/**
* Register a socketio controller
* @param controllerClass
* @param meta
*/
route(controllerClass: Constructor<object>, meta?: SocketIoMetadata | string | RegExp): Server<import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, any> | import("socket.io").Namespace<import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, any>;
/**
* Create socket handler from the controller class
* @param controllerClass
*/
private createSocketHandler;
/**
* Register a socket.io controller
* @param controllerClass
*/
controller(controllerClass: Constructor<unknown>): Binding<unknown>;
/**
* Discover all socket.io controllers and register routes
*/
discoverAndRegister(): void;
/**
* Start the socketio server
*/
start(): Promise<void>;
/**
* Stop the socketio server
*/
stop(): Promise<void>;
}
/**
* Valid configuration for the HttpServer constructor.
*/
export interface HttpServerResolvedOptions {
host?: string;
port: number;
path?: string;
basePath?: string;
cors: cors.CorsOptions;
}