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