UNPKG

sicksync

Version:

Don’t accept the available as the preferable. Go extra mile with extra speed.

65 lines (45 loc) 1.52 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.WSServer = undefined; var _ws = require('ws'); var _events = require('events'); var _crypt = require('../crypt'); var _crypt2 = _interopRequireDefault(_crypt); var _text = require('../../conf/text'); var _text2 = _interopRequireDefault(_text); var _events2 = require('../../conf/events'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const wsEvents = _events2.WS.REMOTE; class WSServer extends _events.EventEmitter { constructor(params) { super(); this._secret = params.secret; this._encrypt = params.encrypt; this._crypt = new _crypt2.default(this._secret); this._ws = new _ws.Server({ port: params.port }); this._ws.on('connection', this.handleConnect.bind(this)); console.info(this._secret, _text2.default.SERVER_ON_READY); } handleConnect(ws) { ws.on('message', this.handleMessage.bind(this)); ws.on('close', this.connectionClosed.bind(this)); } handleMessage(message) { const parsedMessage = this._crypt.decryptAndParse(message, this._encrypt); if (parsedMessage.secret !== this._secret) { return this.emit(wsEvents.UNAUTHORIZED); } /* istanbul ignore else */ if (parsedMessage.subject === 'file') { return this.emit(wsEvents.FILE_CHANGE, parsedMessage); } } connectionClosed() { this.emit(wsEvents.CONNECTION_CLOSED); } } exports.WSServer = WSServer;