@addapptables/ng-web-socket
Version:
Web socket module for Angular
123 lines • 9.59 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable, Inject } from '@angular/core';
import { ROOT_ADAPTER } from '../tokens';
import { getMetadata } from '../decorators/socket.decorator';
import { withOptions } from '../life-cycle/socket-with-options';
export class ManagerSocketAdapter {
/**
* @param {?} adapter
*/
constructor(adapter) {
this.adapter = adapter;
this.connections = [];
}
/**
* @param {?} serviceSockets
* @return {?}
*/
addSockects(serviceSockets) {
this.sockets = serviceSockets;
this.sockets.forEach((/**
* @param {?} socket
* @return {?}
*/
socket => {
/** @type {?} */
const metadata = (/** @type {?} */ (getMetadata(socket.constructor)));
if (metadata.autoConnect) {
this.connect(socket);
}
}));
}
/**
* @param {?} serviceSocket
* @return {?}
*/
connect(serviceSocket) {
return tslib_1.__awaiter(this, void 0, void 0, /** @this {!ManagerSocketAdapter} */ function* () {
/** @type {?} */
let metadata = (/** @type {?} */ (getMetadata(serviceSocket.constructor)));
/** @type {?} */
const methods = getMetadata(serviceSocket);
if (typeof serviceSocket[withOptions] === 'function') {
metadata = Object.assign(metadata, serviceSocket[withOptions]());
}
/** @type {?} */
const connection = yield this.adapter.connect(metadata.url, metadata.options);
this.bindConnection(methods, connection, serviceSocket);
/** @type {?} */
const events = methods && methods.events;
this.bindEvents(connection, events, serviceSocket);
});
}
/**
* @private
* @param {?} methods
* @param {?} connection
* @param {?} serviceSocket
* @return {?}
*/
bindConnection(methods, connection, serviceSocket) {
if (methods && methods.connection) {
serviceSocket[methods.connection] = connection;
}
this.connections.push(connection);
}
/**
* @private
* @param {?} connection
* @param {?} events
* @param {?} serviceSocket
* @return {?}
*/
bindEvents(connection, events, serviceSocket) {
if (events) {
events.forEach((/**
* @param {?} event
* @return {?}
*/
event => {
this.adapter.bindEvent(connection, event.name, serviceSocket[event.function].bind(serviceSocket));
}));
}
}
/**
* @return {?}
*/
ngOnDestroy() {
this.connections.forEach((/**
* @param {?} x
* @return {?}
*/
x => this.adapter.disconnect(x)));
}
}
ManagerSocketAdapter.decorators = [
{ type: Injectable }
];
/** @nocollapse */
ManagerSocketAdapter.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [ROOT_ADAPTER,] }] }
];
if (false) {
/**
* @type {?}
* @private
*/
ManagerSocketAdapter.prototype.sockets;
/**
* @type {?}
* @private
*/
ManagerSocketAdapter.prototype.connections;
/**
* @type {?}
* @private
*/
ManagerSocketAdapter.prototype.adapter;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci1zb2NrZXQtYWRhcHRlcnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRkYXBwdGFibGVzL25nLXdlYi1zb2NrZXQvIiwic291cmNlcyI6WyJsaWIvYWRhcHRlcnMvbWFuYWdlci1zb2NrZXQtYWRhcHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHaEUsTUFBTSxPQUFPLG9CQUFvQjs7OztJQU03QixZQUEwQyxPQUFxQjtRQUFyQixZQUFPLEdBQVAsT0FBTyxDQUFjO1FBRnZELGdCQUFXLEdBQVUsRUFBRSxDQUFDO0lBRW1DLENBQUM7Ozs7O0lBRXBFLFdBQVcsQ0FBQyxjQUFtQjtRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87Ozs7UUFBQyxNQUFNLENBQUMsRUFBRTs7a0JBQ3BCLFFBQVEsR0FBRyxtQkFBa0IsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBQTtZQUNsRSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDeEI7UUFDTCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7O0lBRUssT0FBTyxDQUFDLGFBQWtCOzs7Z0JBQ3hCLFFBQVEsR0FBRyxtQkFBa0IsV0FBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBQTs7a0JBQ2pFLE9BQU8sR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO1lBQzFDLElBQUksT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUNsRCxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNwRTs7a0JBQ0ssVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQzdFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQzs7a0JBQ2xELE1BQU0sR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU07WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7S0FBQTs7Ozs7Ozs7SUFFTyxjQUFjLENBQUMsT0FBWSxFQUFFLFVBQWUsRUFBRSxhQUFrQjtRQUNwRSxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQy9CLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7Ozs7Ozs7SUFFTyxVQUFVLENBQUMsVUFBZSxFQUFFLE1BQTZCLEVBQUUsYUFBa0I7UUFDakYsSUFBSSxNQUFNLEVBQUU7WUFDUixNQUFNLENBQUMsT0FBTzs7OztZQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3RHLENBQUMsRUFBQyxDQUFDO1NBQ047SUFDTCxDQUFDOzs7O0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztJQUM5RCxDQUFDOzs7WUFoREosVUFBVTs7Ozs0Q0FPTSxNQUFNLFNBQUMsWUFBWTs7Ozs7OztJQUpoQyx1Q0FBdUI7Ozs7O0lBRXZCLDJDQUFnQzs7Ozs7SUFFcEIsdUNBQW1EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSVNvY2tldCB9IGZyb20gJy4uL2ludGVyZmFjZXMvc29ja2V0LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFJPT1RfQURBUFRFUiB9IGZyb20gJy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IGdldE1ldGFkYXRhIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9zb2NrZXQuZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgV2ViU29ja2V0T3B0aW9ucyB9IGZyb20gJy4uL21vZGVscy93ZWJzb2NrZXQtb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFdlYlNvY2tldEV2ZW50TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvd2Vic29ja2V0LWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgd2l0aE9wdGlvbnMgfSBmcm9tICcuLi9saWZlLWN5Y2xlL3NvY2tldC13aXRoLW9wdGlvbnMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTWFuYWdlclNvY2tldEFkYXB0ZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAgIHByaXZhdGUgc29ja2V0czogYW55W107XHJcblxyXG4gICAgcHJpdmF0ZSBjb25uZWN0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFJPT1RfQURBUFRFUikgcHJpdmF0ZSBhZGFwdGVyOiBJU29ja2V0PGFueT4pIHsgfVxyXG5cclxuICAgIGFkZFNvY2tlY3RzKHNlcnZpY2VTb2NrZXRzOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnNvY2tldHMgPSBzZXJ2aWNlU29ja2V0cztcclxuICAgICAgICB0aGlzLnNvY2tldHMuZm9yRWFjaChzb2NrZXQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IDxXZWJTb2NrZXRPcHRpb25zPmdldE1ldGFkYXRhKHNvY2tldC5jb25zdHJ1Y3Rvcik7XHJcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5hdXRvQ29ubmVjdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0KHNvY2tldCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjb25uZWN0KHNlcnZpY2VTb2NrZXQ6IGFueSkge1xyXG4gICAgICAgIGxldCBtZXRhZGF0YSA9IDxXZWJTb2NrZXRPcHRpb25zPmdldE1ldGFkYXRhKHNlcnZpY2VTb2NrZXQuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSBnZXRNZXRhZGF0YShzZXJ2aWNlU29ja2V0KTtcclxuICAgICAgICBpZiAodHlwZW9mIHNlcnZpY2VTb2NrZXRbd2l0aE9wdGlvbnNdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIG1ldGFkYXRhID0gT2JqZWN0LmFzc2lnbihtZXRhZGF0YSwgc2VydmljZVNvY2tldFt3aXRoT3B0aW9uc10oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCB0aGlzLmFkYXB0ZXIuY29ubmVjdChtZXRhZGF0YS51cmwsIG1ldGFkYXRhLm9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYmluZENvbm5lY3Rpb24obWV0aG9kcywgY29ubmVjdGlvbiwgc2VydmljZVNvY2tldCk7XHJcbiAgICAgICAgY29uc3QgZXZlbnRzID0gbWV0aG9kcyAmJiBtZXRob2RzLmV2ZW50cztcclxuICAgICAgICB0aGlzLmJpbmRFdmVudHMoY29ubmVjdGlvbiwgZXZlbnRzLCBzZXJ2aWNlU29ja2V0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJpbmRDb25uZWN0aW9uKG1ldGhvZHM6IGFueSwgY29ubmVjdGlvbjogYW55LCBzZXJ2aWNlU29ja2V0OiBhbnkpIHtcclxuICAgICAgICBpZiAobWV0aG9kcyAmJiBtZXRob2RzLmNvbm5lY3Rpb24pIHtcclxuICAgICAgICAgICAgc2VydmljZVNvY2tldFttZXRob2RzLmNvbm5lY3Rpb25dID0gY29ubmVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYmluZEV2ZW50cyhjb25uZWN0aW9uOiBhbnksIGV2ZW50czogV2ViU29ja2V0RXZlbnRNb2RlbFtdLCBzZXJ2aWNlU29ja2V0OiBhbnkpIHtcclxuICAgICAgICBpZiAoZXZlbnRzKSB7XHJcbiAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlci5iaW5kRXZlbnQoY29ubmVjdGlvbiwgZXZlbnQubmFtZSwgc2VydmljZVNvY2tldFtldmVudC5mdW5jdGlvbl0uYmluZChzZXJ2aWNlU29ja2V0KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zLmZvckVhY2goeCA9PiB0aGlzLmFkYXB0ZXIuZGlzY29ubmVjdCh4KSk7XHJcbiAgICB9XHJcbn1cclxuIl19