@microfleet/core
Version:
Abstract microservice core
46 lines • 1.89 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.type = exports.name = exports.attach = exports.priority = void 0;
const assert = require("assert");
const common_errors_1 = require("common-errors");
const _debug = require("debug");
const is = require("is");
const __1 = require("../");
const require_1 = require("../utils/require");
const attach_1 = require("./socketIO/router/attach");
const RequestTracker = require("./router/request-tracker");
const debug = _debug('mservice:socketIO');
function attachSocketIO(opts = {}) {
debug('Attaching socketIO plugin');
const AdapterFactory = require_1.default('ms-socket.io-adapter-amqp').AdapterFactory;
const SocketIO = require_1.default('socket.io');
assert(this.hasPlugin('validator'), new common_errors_1.NotFoundError('validator module must be included'));
const adapters = {
amqp: (adapterOptions) => AdapterFactory.fromOptions(adapterOptions),
};
const config = this.validator.ifError('socketIO', opts);
const { options, router } = config;
const { adapter } = options;
if (is.object(adapter)) {
if (adapters[adapter.name] === undefined) {
throw new common_errors_1.NotImplementedError(`Adapter ${adapter.name} is not implemented`);
}
options.adapter = adapters[adapter.name](adapter.options);
}
const socketIO = SocketIO(options);
if (router.enabled) {
attach_1.default(socketIO, router, this.router);
}
this.socketIO = socketIO;
return {
getRequestCount: RequestTracker.getRequestCount.bind(undefined, this, __1.ActionTransport.socketIO),
};
}
/**
* Relative priority inside the same plugin group type
*/
exports.priority = 100;
exports.attach = attachSocketIO;
exports.name = 'socketIO';
exports.type = __1.PluginTypes.transport;
//# sourceMappingURL=socketIO.js.map
;