sicksync
Version:
Don’t accept the available as the preferable. Go extra mile with extra speed.
65 lines (45 loc) • 1.52 kB
JavaScript
'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;