sg-socket-client
Version:
Web socket client for SUGOS
84 lines (70 loc) • 7.32 kB
JavaScript
/**
* @function sgSocketClient
* @returns {Object}
*/
;
var _Promise = require("@babel/runtime/core-js/promise");
var _Object$assign = require("@babel/runtime/core-js/object/assign");
var socketIoClient = require('socket.io-client');
var _require = require('sg-socket-constants'),
ReservedEvents = _require.ReservedEvents;
var debug = require('debug')('sg:socket:client');
var _require2 = require('./extensions'),
CallExtension = _require2.CallExtension,
LockExtension = _require2.LockExtension,
WrapExtension = _require2.WrapExtension,
PubsubExtension = _require2.PubsubExtension;
var CONNECT = ReservedEvents.CONNECT,
CONNECT_ERROR = ReservedEvents.CONNECT_ERROR,
CONNECT_TIMEOUT = ReservedEvents.CONNECT_TIMEOUT,
DISCONNECT = ReservedEvents.DISCONNECT;
/** @lends sgSocketClient */
function sgSocketClient() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var socket = socketIoClient.apply(void 0, args);
_Object$assign(socket, {
$initial: args.concat()
});
var io = socket.io;
var untilConnect = new _Promise(function (resolve, reject) {
var uri = io.uri;
socket.on(CONNECT_ERROR, function (err) {
var message = "Failed to connect to server: ".concat(uri, ", err: ").concat(err);
debug(message, err);
reject(new Error(message));
});
socket.on(CONNECT_TIMEOUT, function (err) {
var message = "Connection timeout with server: \"".concat(uri, "\", err: ").concat(err);
debug(message, err);
reject(new Error(message));
});
socket.on(CONNECT, function () {
debug("Connected to server: ".concat(uri));
resolve({
uri: uri
});
});
});
var untilDisconnect = new _Promise(function (resolve, reject) {
var uri = io.uri;
socket.on(DISCONNECT, function () {
debug("Disconnected from server: ".concat(uri));
resolve({
uri: uri
});
});
});
_Object$assign(socket, CallExtension, LockExtension, WrapExtension, PubsubExtension, {
waitToConnect: function waitToConnect() {
return untilConnect;
},
waitToDisconnect: function waitToDisconnect() {
return untilDisconnect;
}
});
return socket;
}
module.exports = sgSocketClient;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNnX3NvY2tldF9jbGllbnQuanMiXSwibmFtZXMiOlsic29ja2V0SW9DbGllbnQiLCJyZXF1aXJlIiwiUmVzZXJ2ZWRFdmVudHMiLCJkZWJ1ZyIsIkNhbGxFeHRlbnNpb24iLCJMb2NrRXh0ZW5zaW9uIiwiV3JhcEV4dGVuc2lvbiIsIlB1YnN1YkV4dGVuc2lvbiIsIkNPTk5FQ1QiLCJDT05ORUNUX0VSUk9SIiwiQ09OTkVDVF9USU1FT1VUIiwiRElTQ09OTkVDVCIsInNnU29ja2V0Q2xpZW50IiwiYXJncyIsInNvY2tldCIsIiRpbml0aWFsIiwiaW8iLCJ1bnRpbENvbm5lY3QiLCJyZXNvbHZlIiwicmVqZWN0IiwidXJpIiwib24iLCJlcnIiLCJtZXNzYWdlIiwiRXJyb3IiLCJ1bnRpbERpc2Nvbm5lY3QiLCJ3YWl0VG9Db25uZWN0Iiwid2FpdFRvRGlzY29ubmVjdCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7O0FBSUE7Ozs7OztBQUVBLElBQU1BLGlCQUFpQkMsUUFBUSxrQkFBUixDQUF2Qjs7ZUFDeUJBLFFBQVEscUJBQVIsQztJQUFsQkMsYyxZQUFBQSxjOztBQUNQLElBQU1DLFFBQVFGLFFBQVEsT0FBUixFQUFpQixrQkFBakIsQ0FBZDs7Z0JBT0lBLFFBQVEsY0FBUixDO0lBSkZHLGEsYUFBQUEsYTtJQUNBQyxhLGFBQUFBLGE7SUFDQUMsYSxhQUFBQSxhO0lBQ0FDLGUsYUFBQUEsZTs7SUFJQUMsTyxHQUlFTixjLENBSkZNLE87SUFDQUMsYSxHQUdFUCxjLENBSEZPLGE7SUFDQUMsZSxHQUVFUixjLENBRkZRLGU7SUFDQUMsVSxHQUNFVCxjLENBREZTLFU7QUFHRjs7QUFDQSxTQUFTQyxjQUFULEdBQWtDO0FBQUEsb0NBQU5DLElBQU07QUFBTkEsUUFBTTtBQUFBOztBQUNoQyxNQUFNQyxTQUFTZCw2QkFBa0JhLElBQWxCLENBQWY7O0FBQ0EsaUJBQWNDLE1BQWQsRUFBc0I7QUFDcEJDLGNBQWNGLElBQWQ7QUFEb0IsR0FBdEI7O0FBRmdDLE1BS3pCRyxFQUx5QixHQUtuQkYsTUFMbUIsQ0FLekJFLEVBTHlCO0FBT2hDLE1BQU1DLGVBQWUsYUFBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFBQSxRQUM3Q0MsR0FENkMsR0FDdENKLEVBRHNDLENBQzdDSSxHQUQ2QztBQUVwRE4sV0FBT08sRUFBUCxDQUFVWixhQUFWLEVBQXlCLFVBQUNhLEdBQUQsRUFBUztBQUNoQyxVQUFJQyxpREFBMENILEdBQTFDLG9CQUF1REUsR0FBdkQsQ0FBSjtBQUNBbkIsWUFBTW9CLE9BQU4sRUFBZUQsR0FBZjtBQUNBSCxhQUFPLElBQUlLLEtBQUosQ0FBVUQsT0FBVixDQUFQO0FBQ0QsS0FKRDtBQUtBVCxXQUFPTyxFQUFQLENBQVVYLGVBQVYsRUFBMkIsVUFBQ1ksR0FBRCxFQUFTO0FBQ2xDLFVBQUlDLHNEQUE4Q0gsR0FBOUMsc0JBQTRERSxHQUE1RCxDQUFKO0FBQ0FuQixZQUFNb0IsT0FBTixFQUFlRCxHQUFmO0FBQ0FILGFBQU8sSUFBSUssS0FBSixDQUFVRCxPQUFWLENBQVA7QUFDRCxLQUpEO0FBS0FULFdBQU9PLEVBQVAsQ0FBVWIsT0FBVixFQUFtQixZQUFNO0FBQ3ZCTCwyQ0FBOEJpQixHQUE5QjtBQUNBRixjQUFRO0FBQUNFO0FBQUQsT0FBUjtBQUNELEtBSEQ7QUFJRCxHQWhCb0IsQ0FBckI7QUFrQkEsTUFBTUssa0JBQWtCLGFBQVksVUFBQ1AsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQUEsUUFDaERDLEdBRGdELEdBQ3pDSixFQUR5QyxDQUNoREksR0FEZ0Q7QUFFdkROLFdBQU9PLEVBQVAsQ0FBVVYsVUFBVixFQUFzQixZQUFNO0FBQzFCUixnREFBbUNpQixHQUFuQztBQUNBRixjQUFRO0FBQUNFO0FBQUQsT0FBUjtBQUNELEtBSEQ7QUFJRCxHQU51QixDQUF4Qjs7QUFRQSxpQkFBY04sTUFBZCxFQUNFVixhQURGLEVBRUVDLGFBRkYsRUFHRUMsYUFIRixFQUlFQyxlQUpGLEVBS0U7QUFDRW1CLG1CQUFlO0FBQUEsYUFBTVQsWUFBTjtBQUFBLEtBRGpCO0FBRUVVLHNCQUFrQjtBQUFBLGFBQU1GLGVBQU47QUFBQTtBQUZwQixHQUxGOztBQVVBLFNBQU9YLE1BQVA7QUFDRDs7QUFFRGMsT0FBT0MsT0FBUCxHQUFpQmpCLGNBQWpCIiwiZmlsZSI6InNnX3NvY2tldF9jbGllbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vbGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZnVuY3Rpb24gc2dTb2NrZXRDbGllbnRcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBzb2NrZXRJb0NsaWVudCA9IHJlcXVpcmUoJ3NvY2tldC5pby1jbGllbnQnKVxuY29uc3Qge1Jlc2VydmVkRXZlbnRzfSA9IHJlcXVpcmUoJ3NnLXNvY2tldC1jb25zdGFudHMnKVxuY29uc3QgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpKCdzZzpzb2NrZXQ6Y2xpZW50JylcblxuY29uc3Qge1xuICBDYWxsRXh0ZW5zaW9uLFxuICBMb2NrRXh0ZW5zaW9uLFxuICBXcmFwRXh0ZW5zaW9uLFxuICBQdWJzdWJFeHRlbnNpb25cbn0gPSByZXF1aXJlKCcuL2V4dGVuc2lvbnMnKVxuXG5jb25zdCB7XG4gIENPTk5FQ1QsXG4gIENPTk5FQ1RfRVJST1IsXG4gIENPTk5FQ1RfVElNRU9VVCxcbiAgRElTQ09OTkVDVFxufSA9IFJlc2VydmVkRXZlbnRzXG5cbi8qKiBAbGVuZHMgc2dTb2NrZXRDbGllbnQgKi9cbmZ1bmN0aW9uIHNnU29ja2V0Q2xpZW50ICguLi5hcmdzKSB7XG4gIGNvbnN0IHNvY2tldCA9IHNvY2tldElvQ2xpZW50KC4uLmFyZ3MpXG4gIE9iamVjdC5hc3NpZ24oc29ja2V0LCB7XG4gICAgJGluaXRpYWw6IFsuLi5hcmdzXVxuICB9KVxuICBjb25zdCB7aW99ID0gc29ja2V0XG5cbiAgY29uc3QgdW50aWxDb25uZWN0ID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHt1cml9ID0gaW9cbiAgICBzb2NrZXQub24oQ09OTkVDVF9FUlJPUiwgKGVycikgPT4ge1xuICAgICAgbGV0IG1lc3NhZ2UgPSBgRmFpbGVkIHRvIGNvbm5lY3QgdG8gc2VydmVyOiAke3VyaX0sIGVycjogJHtlcnJ9YFxuICAgICAgZGVidWcobWVzc2FnZSwgZXJyKVxuICAgICAgcmVqZWN0KG5ldyBFcnJvcihtZXNzYWdlKSlcbiAgICB9KVxuICAgIHNvY2tldC5vbihDT05ORUNUX1RJTUVPVVQsIChlcnIpID0+IHtcbiAgICAgIGxldCBtZXNzYWdlID0gYENvbm5lY3Rpb24gdGltZW91dCB3aXRoIHNlcnZlcjogXCIke3VyaX1cIiwgZXJyOiAke2Vycn1gXG4gICAgICBkZWJ1ZyhtZXNzYWdlLCBlcnIpXG4gICAgICByZWplY3QobmV3IEVycm9yKG1lc3NhZ2UpKVxuICAgIH0pXG4gICAgc29ja2V0Lm9uKENPTk5FQ1QsICgpID0+IHtcbiAgICAgIGRlYnVnKGBDb25uZWN0ZWQgdG8gc2VydmVyOiAke3VyaX1gKVxuICAgICAgcmVzb2x2ZSh7dXJpfSlcbiAgICB9KVxuICB9KVxuXG4gIGNvbnN0IHVudGlsRGlzY29ubmVjdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB7dXJpfSA9IGlvXG4gICAgc29ja2V0Lm9uKERJU0NPTk5FQ1QsICgpID0+IHtcbiAgICAgIGRlYnVnKGBEaXNjb25uZWN0ZWQgZnJvbSBzZXJ2ZXI6ICR7dXJpfWApXG4gICAgICByZXNvbHZlKHt1cml9KVxuICAgIH0pXG4gIH0pXG5cbiAgT2JqZWN0LmFzc2lnbihzb2NrZXQsXG4gICAgQ2FsbEV4dGVuc2lvbixcbiAgICBMb2NrRXh0ZW5zaW9uLFxuICAgIFdyYXBFeHRlbnNpb24sXG4gICAgUHVic3ViRXh0ZW5zaW9uLFxuICAgIHtcbiAgICAgIHdhaXRUb0Nvbm5lY3Q6ICgpID0+IHVudGlsQ29ubmVjdCxcbiAgICAgIHdhaXRUb0Rpc2Nvbm5lY3Q6ICgpID0+IHVudGlsRGlzY29ubmVjdFxuICAgIH1cbiAgKVxuICByZXR1cm4gc29ja2V0XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2dTb2NrZXRDbGllbnRcbiJdfQ==