@loopback/socketio
Version:
LoopBack's WebSocket server based on socket.io
67 lines • 2.91 kB
JavaScript
// Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
// Node module: @loopback/socketio
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
Object.defineProperty(exports, "__esModule", { value: true });
exports.SocketIoControllerDefaults = exports.SocketIoBooter = void 0;
const tslib_1 = require("tslib");
// This file is based on https://github.com/loopbackio/loopback-next/blob/master/packages/boot/src/booters/repository.booter.ts
const boot_1 = require("@loopback/boot");
const core_1 = require("@loopback/core");
const keys_1 = require("../keys");
const socketio_server_1 = require("../socketio.server");
/**
* A class that extends {@link @loopback/boot#BaseArtifactBooter} to boot the
* {@link SocketIoController} artifact type.
*
* @remarks
* Discovered controllers are bound using
* {@link @loopback/core#Application.controller}.
*
* Supported phases: `configure`, `discover`, `load`
*
* @param app - {@link @loopback/core#Application} instance
* @param projectRoot - Root of User Project relative to which all paths are
* resolved
* @param socketioControllerConfig - Controller Artifact Options Object
*/
let SocketIoBooter = class SocketIoBooter extends boot_1.BaseArtifactBooter {
constructor(app, projectRoot, socketioControllerConfig = {}, socketioServer) {
super(projectRoot,
// Set Controller Booter Options if passed in via bootConfig
Object.assign({}, exports.SocketIoControllerDefaults, socketioControllerConfig));
this.app = app;
this.socketioControllerConfig = socketioControllerConfig;
this.socketioServer = socketioServer;
}
/**
* Uses super method to get a list of Artifact classes. Boot each class by
* binding it to the application using `app.controller(controller);`.
*/
async load() {
await super.load();
const wsServer = await this.app.get(keys_1.SocketIoBindings.SERVER);
this.classes.forEach(cls => {
wsServer.route(cls);
});
}
};
exports.SocketIoBooter = SocketIoBooter;
exports.SocketIoBooter = SocketIoBooter = tslib_1.__decorate([
(0, boot_1.booter)('socketioControllers'),
tslib_1.__param(0, (0, core_1.inject)(core_1.CoreBindings.APPLICATION_INSTANCE)),
tslib_1.__param(1, (0, core_1.inject)(boot_1.BootBindings.PROJECT_ROOT)),
tslib_1.__param(2, (0, core_1.config)()),
tslib_1.__param(3, (0, core_1.inject)(keys_1.SocketIoBindings.SERVER)),
tslib_1.__metadata("design:paramtypes", [core_1.Application, String, Object, socketio_server_1.SocketIoServer])
], SocketIoBooter);
/**
* Default ArtifactOptions for SocketIoControllerBooter.
*/
exports.SocketIoControllerDefaults = {
dirs: ['ws-controllers'],
extensions: ['.controller.js'],
nested: true,
};
//# sourceMappingURL=socketio.booter.js.map
;