UNPKG

awv3

Version:
140 lines (106 loc) 5.09 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _map = require('babel-runtime/core-js/map'); var _map2 = _interopRequireDefault(_map); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _socket = require('socket.io-client'); var _socket2 = _interopRequireDefault(_socket); var _base = require('./base'); var _base2 = _interopRequireDefault(_base); var _parser = require('../core/parser'); var _parser2 = _interopRequireDefault(_parser); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var SocketIO = function (_Base) { (0, _inherits3.default)(SocketIO, _Base); function SocketIO(options) { (0, _classCallCheck3.default)(this, SocketIO); return (0, _possibleConstructorReturn3.default)(this, (SocketIO.__proto__ || (0, _getPrototypeOf2.default)(SocketIO)).call(this, options)); } (0, _createClass3.default)(SocketIO, [{ key: 'connect', value: function connect() { var _this2 = this; var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.url; var options = arguments[1]; return new _promise2.default(function (resolve, reject) { _this2.url = url; _this2.socket = (0, _socket2.default)(url); _this2.socket.once("connect", function () { _this2.socket.once('permission', function (data) { _this2.connected = true; _this2.id = data.id; _this2.emit('connected', _this2, data); resolve(_this2); }); _this2.socket.emit('init', options || _this2.options); }); _this2.socket.on('connect_error', function (reason) { _this2.emit('error', reason); reject(reason); }); _this2.socket.on('connect_timeout', function (reason) { _this2.emit('error', reason); reject(reason); }); var current = undefined; _this2.socket.on('binary', function (data, flags) { SocketIO._ack(_this2.socket); if (current) (0, _parser.handleResult)(current, new Uint8Array(data)); }); _this2.socket.on('json', function (data) { SocketIO._ack(_this2.socket); if (data.from === 'BeginFrame') current = _this2.tasks.get(data.transactionID); if (current) (0, _parser.handleResult)(current, data); if (current && data.from === 'EndFrame' && data.transactionID === current.id) { _this2.tasks.delete(current.id); current = undefined; } }); }); } }, { key: 'disconnect', value: function disconnect() { this.socket.disconnect(); this.socket = undefined; this.tasks = new _map2.default(); this.emit('disconnected', this); } }, { key: 'request', value: function request(command) { var _this3 = this; var factory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return new _promise2.default(function (resolve, reject) { var context = (0, _parser.createContext)(factory, resolve, reject, command); context.options.callback({ type: _parser2.default.Factory.Started, context: context }); _this3.tasks.set(context.id, context); _this3.socket.emit('send', context.id, command, factory.classcad); }).then(function (results) { results.options.callback({ type: _parser2.default.Factory.Finished, context: results }); return results; }); } }], [{ key: '_ack', value: function _ack(socket) { //if (socket.io.engine.transport.name !== 'websocket'); socket && socket.emit('received'); } }]); return SocketIO; }(_base2.default); exports.default = SocketIO;