UNPKG

@lskjs/server

Version:

LSK server.

138 lines (103 loc) 14 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = _default; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _dns = _interopRequireDefault(require("dns")); var _socket = _interopRequireDefault(require("socket.io-redis")); var _bluebird = _interopRequireDefault(require("bluebird")); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var dnsLookup = _bluebird["default"].promisify(_dns["default"].lookup); function _default() { return _ref.apply(this, arguments); } function _ref() { _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var _this = this; var pubClient, subClient, DEBUG, reconnectTime, pubAddress, subAddress; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: return _context.abrupt("return", false); case 6: pubAddress = _context.sent; DEBUG && console.log("pub redis address ".concat(pubAddress), "instance ".concat(__INSTANCE)); //eslint-disable-line _context.next = 10; return new _bluebird["default"](function (resolve) { DEBUG && console.log('pub config', "instance ".concat(__INSTANCE), _this.config.redis); //eslint-disable-line pubClient = redis.createClient(_objectSpread(_objectSpread({}, _this.config.redis), {}, { retry_strategy: function retry_strategy(options) { DEBUG && console.log('pub error', "instance ".concat(__INSTANCE), options); //eslint-disable-line if (!options.error) { DEBUG && console.log('redis упал (pub), надо перезапуститься без него'); //eslint-disable-line process.exit(1); } else if (options.error && ['EHOSTUNREACH', 'ECONNREFUSED'].includes(options.error.code)) { DEBUG && console.log("try reconnect pub after ".concat(reconnectTime)); //eslint-disable-line return 5000; } return undefined; } })); pubClient.on('connect', function () { DEBUG && console.log('pub connected'); //eslint-disable-line resolve(); }); }); case 10: _context.next = 12; return _bluebird["default"].delay(1000); case 12: _context.next = 14; return _dns["default"].lookup(this.config.redis.host); case 14: subAddress = _context.sent; DEBUG && console.log("sub redis address ".concat(subAddress), "instance ".concat(__INSTANCE)); //eslint-disable-line _context.next = 18; return new _bluebird["default"](function (resolve) { DEBUG && console.log('sub config', "instance ".concat(__INSTANCE), _this.config.redis); //eslint-disable-line subClient = redis.createClient(_objectSpread(_objectSpread({}, _this.config.redis), {}, { retry_strategy: function retry_strategy(options) { DEBUG && console.log('sub error', "instance ".concat(__INSTANCE), options); //eslint-disable-line if (!options.error) { DEBUG && console.log('redis упал (sub), надо перезапуститься без него'); //eslint-disable-line process.exit(1); } else if (options.error && ['EHOSTUNREACH', 'ECONNREFUSED'].includes(options.error.code)) { DEBUG && console.log("try reconnect sub after ".concat(reconnectTime)); //eslint-disable-line return 5000; } return undefined; } })); subClient.on('connect', function () { DEBUG && console.log('sub connected'); //eslint-disable-line resolve(); }); }); case 18: this.ws.adapter((0, _socket["default"])({ pubClient: pubClient, subClient: subClient })); _context.next = 24; break; case 21: _context.prev = 21; _context.t0 = _context["catch"](3); DEBUG && console.log('redis err', _context.t0); //eslint-disable-line case 24: case "end": return _context.stop(); } } }, _callee, this, [[3, 21]]); })); return _ref.apply(this, arguments); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL3J1blJlZGlzLmpzIl0sIm5hbWVzIjpbImRuc0xvb2t1cCIsIlByb21pc2UiLCJwcm9taXNpZnkiLCJkbnMiLCJsb29rdXAiLCJwdWJBZGRyZXNzIiwiREVCVUciLCJjb25zb2xlIiwibG9nIiwiX19JTlNUQU5DRSIsInJlc29sdmUiLCJjb25maWciLCJyZWRpcyIsInB1YkNsaWVudCIsImNyZWF0ZUNsaWVudCIsInJldHJ5X3N0cmF0ZWd5Iiwib3B0aW9ucyIsImVycm9yIiwicHJvY2VzcyIsImV4aXQiLCJpbmNsdWRlcyIsImNvZGUiLCJyZWNvbm5lY3RUaW1lIiwidW5kZWZpbmVkIiwib24iLCJkZWxheSIsImhvc3QiLCJzdWJBZGRyZXNzIiwic3ViQ2xpZW50Iiwid3MiLCJhZGFwdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUEsSUFBTUEsU0FBUyxHQUFHQyxxQkFBUUMsU0FBUixDQUFrQkMsZ0JBQUlDLE1BQXRCLENBQWxCOzs7Ozs7O3VGQUVlO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDZDQUNOLEtBRE07O0FBQUE7QUFPTEMsWUFBQUEsVUFQSztBQVFUQyxZQUFBQSxLQUFLLElBQUlDLE9BQU8sQ0FBQ0MsR0FBUiw2QkFBaUNILFVBQWpDLHNCQUEyREksVUFBM0QsRUFBVCxDQVJTLENBUTJFOztBQVIzRTtBQUFBLG1CQVNMLElBQUlSLG9CQUFKLENBQVksVUFBQ1MsT0FBRCxFQUFhO0FBQzNCSixjQUFBQSxLQUFLLElBQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLFlBQVoscUJBQXNDQyxVQUF0QyxHQUFvRCxLQUFJLENBQUNFLE1BQUwsQ0FBWUMsS0FBaEUsQ0FBVCxDQUQyQixDQUN1RDs7QUFDcEZDLGNBQUFBLFNBQVMsR0FBR0QsS0FBSyxDQUFDRSxZQUFOLGlDQUNQLEtBQUksQ0FBQ0gsTUFBTCxDQUFZQyxLQURMO0FBRVZHLGdC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SUFBSUMsT0FBTyxDQUFDQyxHQUFSLENBQVksZUFBWixDQUFULENBRDBCLENBQ2M7O0FBQzFDRSxnQkFBQUEsT0FBTztBQUNSLGVBSEQ7QUFJRCxhQXBCSyxDQWpDSzs7QUFBQTtBQXNEWCxpQkFBS21CLEVBQUwsQ0FBUUMsT0FBUixDQUFnQix3QkFBYTtBQUFFakIsY0FBQUEsU0FBUyxFQUFUQSxTQUFGO0FBQWFlLGNBQUFBLFNBQVMsRUFBVEE7QUFBYixhQUFiLENBQWhCO0FBdERXO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBd0RUdEIsWUFBQUEsS0FBSyxJQUFJQyxPQUFPLENBQUNDLEdBQVIsQ0FBWSxXQUFaLGNBQVQsQ0F4RFMsQ0F3RGdDOztBQXhEaEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkbnMgZnJvbSAnZG5zJztcbmltcG9ydCByZWRpc0FkYXB0ZXIgZnJvbSAnc29ja2V0LmlvLXJlZGlzJztcbi8vIGltcG9ydCByZWRpcyBmcm9tICdyZWRpcyc7XG5pbXBvcnQgUHJvbWlzZSBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IGRuc0xvb2t1cCA9IFByb21pc2UucHJvbWlzaWZ5KGRucy5sb29rdXApO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmYWxzZVxuICBsZXQgcHViQ2xpZW50O1xuICBsZXQgc3ViQ2xpZW50O1xuICBjb25zdCBERUJVRyA9IHRoaXMuY29uZmlnLnJlZGlzLmRlYnVnO1xuICBjb25zdCByZWNvbm5lY3RUaW1lID0gNTAwMDtcbiAgdHJ5IHtcbiAgICBjb25zdCBwdWJBZGRyZXNzID0gYXdhaXQgZG5zTG9va3VwKHRoaXMuY29uZmlnLnJlZGlzLmhvc3QpO1xuICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coYHB1YiByZWRpcyBhZGRyZXNzICR7cHViQWRkcmVzc31gLCBgaW5zdGFuY2UgJHtfX0lOU1RBTkNFfWApOyAgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coJ3B1YiBjb25maWcnLCBgaW5zdGFuY2UgJHtfX0lOU1RBTkNFfWAsIHRoaXMuY29uZmlnLnJlZGlzKTsgIC8vZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgcHViQ2xpZW50ID0gcmVkaXMuY3JlYXRlQ2xpZW50KHtcbiAgICAgICAgLi4udGhpcy5jb25maWcucmVkaXMsXG4gICAgICAgIHJldHJ5X3N0cmF0ZWd5OiAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coJ3B1YiBlcnJvcicsIGBpbnN0YW5jZSAke19fSU5TVEFOQ0V9YCwgb3B0aW9ucyk7ICAvL2VzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuZXJyb3IpIHtcbiAgICAgICAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coJ3JlZGlzINGD0L/QsNC7IChwdWIpLCDQvdCw0LTQviDQv9C10YDQtdC30LDQv9GD0YHRgtC40YLRjNGB0Y8g0LHQtdC3INC90LXQs9C+Jyk7ICAvL2VzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZXJyb3IgJiYgWydFSE9TVFVOUkVBQ0gnLCAnRUNPTk5SRUZVU0VEJ10uaW5jbHVkZXMob3B0aW9ucy5lcnJvci5jb2RlKSkge1xuICAgICAgICAgICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhgdHJ5IHJlY29ubmVjdCBwdWIgYWZ0ZXIgJHtyZWNvbm5lY3RUaW1lfWApOyAgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgICAgICByZXR1cm4gNTAwMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgcHViQ2xpZW50Lm9uKCdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgIERFQlVHICYmIGNvbnNvbGUubG9nKCdwdWIgY29ubmVjdGVkJyk7ICAvL2VzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgYXdhaXQgUHJvbWlzZS5kZWxheSgxMDAwKTtcbiAgICBjb25zdCBzdWJBZGRyZXNzID0gYXdhaXQgZG5zLmxvb2t1cCh0aGlzLmNvbmZpZy5yZWRpcy5ob3N0KTtcbiAgICAgIERFQlVHICYmIGNvbnNvbGUubG9nKGBzdWIgcmVkaXMgYWRkcmVzcyAke3N1YkFkZHJlc3N9YCwgYGluc3RhbmNlICR7X19JTlNUQU5DRX1gKTsgIC8vZXNsaW50LWRpc2FibGUtbGluZVxuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIERFQlVHICYmIGNvbnNvbGUubG9nKCdzdWIgY29uZmlnJywgYGluc3RhbmNlICR7X19JTlNUQU5DRX1gLCB0aGlzLmNvbmZpZy5yZWRpcyk7ICAvL2VzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHN1YkNsaWVudCA9IHJlZGlzLmNyZWF0ZUNsaWVudCh7XG4gICAgICAgIC4uLnRoaXMuY29uZmlnLnJlZGlzLFxuICAgICAgICByZXRyeV9zdHJhdGVneTogKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIERFQlVHICYmIGNvbnNvbGUubG9nKCdzdWIgZXJyb3InLCBgaW5zdGFuY2UgJHtfX0lOU1RBTkNFfWAsIG9wdGlvbnMpOyAgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgICAgaWYgKCFvcHRpb25zLmVycm9yKSB7XG4gICAgICAgICAgICAgIERFQlVHICYmIGNvbnNvbGUubG9nKCdyZWRpcyDRg9C/0LDQuyAoc3ViKSwg0L3QsNC00L4g0L/QtdGA0LXQt9Cw0L/Rg9GB0YLQuNGC0YzRgdGPINCx0LXQtyDQvdC10LPQvicpOyAgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmVycm9yICYmIFsnRUhPU1RVTlJFQUNIJywgJ0VDT05OUkVGVVNFRCddLmluY2x1ZGVzKG9wdGlvbnMuZXJyb3IuY29kZSkpIHtcbiAgICAgICAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coYHRyeSByZWNvbm5lY3Qgc3ViIGFmdGVyICR7cmVjb25uZWN0VGltZX1gKTsgIC8vZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICAgICAgcmV0dXJuIDUwMDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHN1YkNsaWVudC5vbignY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICBERUJVRyAmJiBjb25zb2xlLmxvZygnc3ViIGNvbm5lY3RlZCcpOyAgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMud3MuYWRhcHRlcihyZWRpc0FkYXB0ZXIoeyBwdWJDbGllbnQsIHN1YkNsaWVudCB9KSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coJ3JlZGlzIGVycicsIGVycik7ICAvL2VzbGludC1kaXNhYmxlLWxpbmVcbiAgfVxufVxuIl19 //# sourceMappingURL=runRedis.js.map