@loopeco/socketio
Version:
A enhanced LoopBack's WebSocket server based on socket.io
85 lines (84 loc) • 2.73 kB
TypeScript
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;
}