awv3
Version:
AWV client CAD framework
1 lines • 2.49 kB
JavaScript
;function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}exports.__esModule=!0;var _map=require("babel-runtime/core-js/map"),_map2=_interopRequireDefault(_map),_promise=require("babel-runtime/core-js/promise"),_promise2=_interopRequireDefault(_promise),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_possibleConstructorReturn2=require("babel-runtime/helpers/possibleConstructorReturn"),_possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2),_inherits2=require("babel-runtime/helpers/inherits"),_inherits3=_interopRequireDefault(_inherits2),_socket=require("socket.io-client"),_socket2=_interopRequireDefault(_socket),_base=require("../communication/base"),_base2=_interopRequireDefault(_base),_parser=require("../core/parser"),_parser2=_interopRequireDefault(_parser),SocketIO=function(e){function t(r){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,r))}return(0,_inherits3.default)(t,e),t.prototype.connect=function(){var e=this,r=arguments.length<=0||void 0===arguments[0]?this.url:arguments[0],o=arguments[1];return new _promise2.default(function(n,i){e.url=r,e.socket=(0,_socket2.default)(r),e.socket.once("connect",function(){e.socket.once("permission",function(t){e.connected=!0,e.id=t.id,e.emit("connected",e),n(e)}),e.socket.emit("init",o||e.options)}),e.socket.on("connect_error",function(t){e.emit("error",t),i(t)}),e.socket.on("connect_timeout",function(t){e.emit("error",t),i(t)});var s=void 0;e.socket.on("binary",function(r,o){t._ack(e.socket),s&&(0,_parser.handleResult)(s,new Uint8Array(r))}),e.socket.on("json",function(r){t._ack(e.socket),"BeginFrame"===r.from&&(s=e.tasks.get(r.transactionID)),s&&(0,_parser.handleResult)(s,r),s&&"EndFrame"===r.from&&r.transactionID===s.id&&(e.tasks.delete(s.id),s=void 0)})})},t.prototype.disconnect=function(){this.socket.disconnect(),this.socket=void 0,this.tasks=new _map2.default,this.emit("disconnected",this)},t.prototype.request=function(e,t){var r=this;return new _promise2.default(function(o,n){var i=(0,_parser.createContext)(t,o,n,e);i.options.callback({type:_parser2.default.Factory.Started,context:i}),r.tasks.set(i.id,i),r.socket.emit("send",i.id,e)}).then(function(e){return e.options.callback({type:_parser2.default.Factory.Finished,context:e}),e})},t._ack=function(e){e&&e.emit("received")},t}(_base2.default);exports.default=SocketIO;