UNPKG

lisa-box

Version:
53 lines 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const common_1 = require("@fabrix/fabrix/dist/common"); const _ = require('lodash'); const rooms = require('primus-rooms'); const emitter = require('primus-emitter'); class WebSocketService extends common_1.FabrixService { _authorize(req, authorized) { const token = req.query.token; if (!token) { return authorized(new Error('No auth token')); } const jwtConfig = this.app.config.passport.strategies.jwt; const jwtOptions = _.clone(jwtConfig.tokenOptions); jwtOptions.algorithms = jwtOptions.algorithm; delete jwtOptions.algorithm; const jwtVerifier = jwtConfig.strategy.JwtVerifier; jwtVerifier(token, jwtConfig.options.secretOrKey, jwtOptions, (err, payload) => { if (err) { authorized(err); } else { req.user = payload.user; authorized(); } }); } init() { this.app.sockets.use('rooms', rooms); this.app.sockets.use('emitter', emitter); this.app.sockets.authorize(this._authorize); this.app.sockets.on('connection', spark => { const user = spark.request.user; spark.join('user_' + user.id); spark.on('join', (socketRoom, fn) => { spark.join(socketRoom, fn); }); spark.on('leave', (room, fn) => { spark.leave(room, fn); }); spark.on('data', data => { }); }); this.app.sockets.on('disconnection', spark => { const user = spark.request.user; if (user && spark && spark.leave) { spark.leave('user_' + user.id); } }); } } exports.WebSocketService = WebSocketService; //# sourceMappingURL=WebSocketService.js.map