@loopeco/socketio
Version:
A enhanced LoopBack's WebSocket server based on socket.io
69 lines • 2.59 kB
JavaScript
;
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