UNPKG

ng6-socket-io

Version:

Socket.IO Module for Angular 6 and RxJS6

83 lines (82 loc) 3.41 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@angular/core"); var io = require("socket.io-client"); var socket_io_module_1 = require("./socket-io.module"); var rxjs_1 = require("rxjs"); var operators_1 = require("rxjs/operators"); var WrappedSocket = /** @class */ (function () { function WrappedSocket(config, ngZone) { var _this = this; this.subscribersCounter = 0; var url = config.url || ''; var options = config.options || {}; ngZone.runOutsideAngular(function () { _this.ioSocket = io(url, options); }); } WrappedSocket.prototype.on = function (eventName, callback) { this.ioSocket.on(eventName, callback); }; WrappedSocket.prototype.once = function (eventName, callback) { this.ioSocket.once(eventName, callback); }; WrappedSocket.prototype.connect = function () { return this.ioSocket.connect(); }; WrappedSocket.prototype.disconnect = function (close) { return this.ioSocket.disconnect.apply(this.ioSocket, arguments); }; WrappedSocket.prototype.emit = function (eventName, data, callback) { return this.ioSocket.emit.apply(this.ioSocket, arguments); }; WrappedSocket.prototype.removeListener = function (eventName, callback) { return this.ioSocket.removeListener.apply(this.ioSocket, arguments); }; WrappedSocket.prototype.removeAllListeners = function (eventName) { return this.ioSocket.removeAllListeners.apply(this.ioSocket, arguments); }; /** create an Observable from an event */ WrappedSocket.prototype.fromEvent = function (eventName) { var _this = this; this.subscribersCounter++; return rxjs_1.Observable.create(function (observer) { _this.ioSocket.on(eventName, function (data) { observer.next(data); }); return function () { if (_this.subscribersCounter === 1) _this.ioSocket.removeListener(eventName); }; }).pipe(operators_1.share()); }; /* Creates a Promise for a one-time event */ WrappedSocket.prototype.fromEventOnce = function (eventName) { var _this = this; return new Promise(function (resolve) { return _this.once(eventName, resolve); }); }; WrappedSocket = __decorate([ __param(0, core_1.Inject(socket_io_module_1.SOCKET_CONFIG_TOKEN)), __metadata("design:paramtypes", [Object, core_1.NgZone]) ], WrappedSocket); return WrappedSocket; }()); exports.WrappedSocket = WrappedSocket; //# sourceMappingURL=socket-io.service.js.map