@loopeco/socketio
Version:
A enhanced LoopBack's WebSocket server based on socket.io
42 lines (41 loc) • 2.23 kB
TypeScript
import { Context, ControllerClass } from '@loopback/core';
import { HttpServerOptions } from '@loopback/http-server';
import { Socket } from 'socket.io';
import { ExtendedError } from 'socket.io/dist/namespace';
import { MiddlewareContext } from '@loopback/express';
import { DefaultEventsMap, EventsMap } from 'socket.io/dist/typed-events';
export declare type SocketIoOptions = HttpServerOptions;
export interface SocketIoSequence {
handle(methodName: string, args: unknown[], done: Function): Promise<void>;
}
export declare type SocketIoDoneFunction = (response: unknown) => Promise<void>;
export declare type SocketIoInvokeMethod = (context: Context, controller: ControllerClass, methodName: string, args: unknown[]) => unknown;
export declare type SocketIoSendMethod = (done: Function, result: unknown) => unknown;
export declare type SocketIoRejectMethod = (done: Function, error: Error) => unknown;
export interface SocketIoNextFunction {
(err?: ExtendedError): void;
}
export interface SocketIoConnectionHandler<ListenEvents extends EventsMap = DefaultEventsMap, EmitEvents extends EventsMap = ListenEvents, ServerSideEvents extends EventsMap = DefaultEventsMap> {
(socket: Socket<ListenEvents, EmitEvents, ServerSideEvents>, next: SocketIoNextFunction): void;
}
export interface SocketIoHandlerContext {
socket: Socket;
}
/**
* A per-connection Context to combine an IoC container with handler
* context (socket, etc.).
*/
export declare class SocketIoConnectionContext extends MiddlewareContext implements SocketIoHandlerContext {
readonly socket: Socket;
/**
* Constructor for `SocketContext`
* @param socket - SocketIO socket object
* @param parent - Parent context
* @param name - Name of the middleware context
*/
constructor(socket: Socket, parent?: Context, name?: string);
protected setupBindings(): void;
}
export declare function isConnectionContext(ctx: any): ctx is SocketIoConnectionContext;
export declare function getConnectionContext<T extends SocketIoConnectionContext = SocketIoConnectionContext>(socket: Socket): T | undefined;
export declare function getSocket(context: Context): Socket<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap>;