UNPKG

@loopeco/socketio

Version:

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

44 lines 1.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSocket = exports.getConnectionContext = exports.isConnectionContext = exports.SocketIoConnectionContext = void 0; const express_1 = require("@loopback/express"); const keys_1 = require("./keys"); const express_2 = require("./express"); /** * A per-connection Context to combine an IoC container with handler * context (socket, etc.). */ class SocketIoConnectionContext extends express_1.MiddlewareContext { /** * Constructor for `SocketContext` * @param socket - SocketIO socket object * @param parent - Parent context * @param name - Name of the middleware context */ constructor(socket, parent, name) { super(...express_2.expressInit(socket), parent, name); this.socket = socket; this.setupBindings(); } setupBindings() { this.bind(keys_1.SocketIoBindings.SOCKET).to(this.socket); } } exports.SocketIoConnectionContext = SocketIoConnectionContext; // eslint-disable-next-line @typescript-eslint/no-explicit-any function isConnectionContext(ctx) { return !!ctx && typeof ctx.bind === 'function' && !!ctx.socket; } exports.isConnectionContext = isConnectionContext; function getConnectionContext(socket) { return express_1.getMiddlewareContext(socket.request); } exports.getConnectionContext = getConnectionContext; function getSocket(context) { if (isConnectionContext(context)) { return context.socket; } return context.getSync(keys_1.SocketIoBindings.SOCKET); } exports.getSocket = getSocket; //# sourceMappingURL=types.js.map