UNPKG

@loopeco/socketio

Version:

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

69 lines 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toSocketIoMiddleware = exports.createMiddlewareBindingForSocketIo = exports.registerMiddlewareForSocketIo = exports.asMiddlewareForSocketIo = void 0; const express_1 = require("@loopback/express"); const types_1 = require("./types"); const keys_1 = require("./keys"); /** * Template function for middleware bindings * @param options - Options to configure the binding */ function asMiddlewareForSocketIo(options = {}) { return express_1.asMiddleware({ chain: keys_1.SocketIoTags.SOCKETIO_MIDDLEWARE_CHAIN, ...options, }); } exports.asMiddlewareForSocketIo = asMiddlewareForSocketIo; /** * Bind the middleware function or provider class to the context * @param ctx - Context object * @param middleware - Middleware function or provider class * @param options - Middleware binding options */ function registerMiddlewareForSocketIo(ctx, middleware, options) { return express_1.registerMiddleware(ctx, middleware, { chain: keys_1.SocketIoTags.SOCKETIO_MIDDLEWARE_CHAIN, ...options, }); } exports.registerMiddlewareForSocketIo = registerMiddlewareForSocketIo; /** * Create a binding for the middleware provider class * * @param middlewareProviderClass - Middleware provider class * @param options - Options to create middleware binding * */ function createMiddlewareBindingForSocketIo(middlewareProviderClass, options = {}) { return express_1.createMiddlewareBinding(middlewareProviderClass, { chain: keys_1.SocketIoTags.SOCKETIO_MIDDLEWARE_CHAIN, ...options, }); } exports.createMiddlewareBindingForSocketIo = createMiddlewareBindingForSocketIo; /** * An adapter function to create an SocketIo middleware handler to discover and * invoke registered LoopBack-style middleware in the context. * @param ctx - Context object to discover registered middleware * @param options - Options for middleware invoking */ function toSocketIoMiddleware(ctx, options) { return async (socket, next) => { const connCtx = new types_1.SocketIoConnectionContext(socket, ctx); try { const result = await express_1.invokeMiddleware(connCtx, { chain: keys_1.SocketIoTags.SOCKETIO_MIDDLEWARE_CHAIN, ...options, }); if (result !== connCtx.response) { next(); } } catch (err) { next(err); } }; } exports.toSocketIoMiddleware = toSocketIoMiddleware; //# sourceMappingURL=middleware.js.map