UNPKG

ng2-signalr

Version:
70 lines 12.9 kB
import { SignalRConfiguration } from './signalr.configuration'; import { SignalRConnection } from './connection/signalr.connection'; import { NgZone, Injectable, Inject } from '@angular/core'; import { SIGNALR_JCONNECTION_TOKEN } from './signalr.module'; export class SignalR { constructor(configuration, zone, jHubConnectionFn /* use type 'any'; Suggested workaround from angular repository: https://github.com/angular/angular/issues/12631 */) { this._configuration = configuration; this._zone = zone; this._jHubConnectionFn = jHubConnectionFn; } createConnection(options) { const configuration = this.merge(options ? options : {}); this.logConfiguration(configuration); // create connection object const jConnection = this._jHubConnectionFn(configuration.url); jConnection.logging = configuration.logging; jConnection.qs = configuration.qs; // create a proxy const jProxy = jConnection.createHubProxy(configuration.hubName); // !!! important. We need to register at least one function otherwise server callbacks will not work. jProxy.on('noOp', () => { }); const hubConnection = new SignalRConnection(jConnection, jProxy, this._zone, configuration); return hubConnection; } connect(options) { return this.createConnection(options).start(); } logConfiguration(configuration) { try { const serializedQs = JSON.stringify(configuration.qs); const serializedTransport = JSON.stringify(configuration.transport); if (configuration.logging) { this.log(`Creating connecting with...`); this.log(`configuration:[url: '${configuration.url}'] ...`); this.log(`configuration:[hubName: '${configuration.hubName}'] ...`); this.log(`configuration:[qs: '${serializedQs}'] ...`); this.log(`configuration:[transport: '${serializedTransport}'] ...`); } } catch (err) { /* */ } } log(str) { // tslint:disable-next-line: no-console console.log(str); } merge(overrides) { const merged = new SignalRConfiguration(); merged.hubName = overrides.hubName || this._configuration.hubName; merged.url = overrides.url || this._configuration.url; merged.qs = overrides.qs || this._configuration.qs; merged.logging = this._configuration.logging; merged.jsonp = overrides.jsonp || this._configuration.jsonp; merged.withCredentials = overrides.withCredentials || this._configuration.withCredentials; merged.transport = overrides.transport || this._configuration.transport; merged.executeEventsInZone = overrides.executeEventsInZone || this._configuration.executeEventsInZone; merged.executeErrorsInZone = overrides.executeErrorsInZone || this._configuration.executeErrorsInZone; merged.executeStatusChangeInZone = overrides.executeStatusChangeInZone || this._configuration.executeStatusChangeInZone; merged.pingInterval = overrides.pingInterval || this._configuration.pingInterval; return merged; } } SignalR.decorators = [ { type: Injectable } ]; SignalR.ctorParameters = () => [ { type: SignalRConfiguration }, { type: NgZone }, { type: undefined, decorators: [{ type: Inject, args: [SIGNALR_JCONNECTION_TOKEN,] }] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nMi1zaWduYWxyL3NyYy9saWIvc2VydmljZXMvc2lnbmFsci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFLN0QsTUFBTSxPQUFPLE9BQU87SUFLaEIsWUFDSSxhQUFtQyxFQUNuQyxJQUFZLEVBQ3VCLGdCQUFxQixDQUFDLG1IQUFtSDtRQUU1SyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7SUFDOUMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE9BQTRCO1FBQ2hELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVyQywyQkFBMkI7UUFDM0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5RCxXQUFXLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDNUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBRWxDLGlCQUFpQjtRQUNqQixNQUFN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UUFDeEgsTUFBTSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDO1FBQ2pGLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OztZQXpFSixVQUFVOzs7WUFSRixvQkFBb0I7WUFFcEIsTUFBTTs0Q0FlTixNQUFNLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVNpZ25hbFJDb25uZWN0aW9uIH0gZnJvbSAnLi9jb25uZWN0aW9uL2kuc2lnbmFsci5jb25uZWN0aW9uJztcclxuaW1wb3J0IHsgU2lnbmFsUkNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3NpZ25hbHIuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IFNpZ25hbFJDb25uZWN0aW9uIH0gZnJvbSAnLi9jb25uZWN0aW9uL3NpZ25hbHIuY29ubmVjdGlvbic7XHJcbmltcG9ydCB7IE5nWm9uZSwgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4vY29ubmVjdGlvbi9jb25uZWN0aW9uLm9wdGlvbnMnO1xyXG5pbXBvcnQgeyBTSUdOQUxSX0pDT05ORUNUSU9OX1RPS0VOIH0gZnJvbSAnLi9zaWduYWxyLm1vZHVsZSc7XHJcblxyXG5kZWNsYXJlIHZhciBqUXVlcnk6IGFueTtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNpZ25hbFIge1xyXG4gICAgcHJpdmF0ZSBfY29uZmlndXJhdGlvbjogU2lnbmFsUkNvbmZpZ3VyYXRpb247XHJcbiAgICBwcml2YXRlIF96b25lOiBOZ1pvbmU7XHJcbiAgICBwcml2YXRlIF9qSHViQ29ubmVjdGlvbkZuOiBhbnk7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IFNpZ25hbFJDb25maWd1cmF0aW9uLFxyXG4gICAgICAgIHpvbmU6IE5nWm9uZSxcclxuICAgICAgICBASW5qZWN0KFNJR05BTFJfSkNPTk5FQ1RJT05fVE9LRU4pIGpIdWJDb25uZWN0aW9uRm46IGFueSAvKiB1c2UgdHlwZSAnYW55JzsgU3VnZ2VzdGVkIHdvcmthcm91bmQgZnJvbSBhbmd1bGFyIHJlcG9zaXRvcnk6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyNjMxICovXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcclxuICAgICAgICB0aGlzLl96b25lID0gem9uZTtcclxuICAgICAgICB0aGlzLl9qSHViQ29ubmVjdGlvbkZuID0gakh1YkNvbm5lY3Rpb25GbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY3JlYXRlQ29ubmVjdGlvbihvcHRpb25zPzogSUNvbm5lY3Rpb25PcHRpb25zKTogU2lnbmFsUkNvbm5lY3Rpb24ge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLm1lcmdlKG9wdGlvbnMgPyBvcHRpb25zIDoge30pO1xyXG5cclxuICAgICAgICB0aGlzLmxvZ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBjb25uZWN0aW9uIG9iamVjdFxyXG4gICAgICAgIGNvbnN0IGpDb25uZWN0aW9uID0gdGhpcy5fakh1YkNvbm5lY3Rpb25Gbihjb25maWd1cmF0aW9uLnVybCk7XHJcbiAgICAgICAgakNvbm5lY3Rpb24ubG9nZ2luZyA9IGNvbmZpZ3VyYXRpb24ubG9nZ2luZztcclxuICAgICAgICBqQ29ubmVjdGlvbi5xcyA9IGNvbmZpZ3VyYXRpb24ucXM7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBhIHByb3h5XHJcbiAgICAgICAgY29uc3QgalByb3h5ID0gakNvbm5lY3Rpb24uY3JlYXRlSHViUHJveHkoY29uZmlndXJhdGlvbi5odWJOYW1lKTtcclxuICAgICAgICAvLyAhISEgaW1wb3J0YW50LiBXZSBuZWVkIHRvIHJlZ2lzdGVyIGF0IGxlYXN0IG9uZSBmdW5jdGlvbiBvdGhlcndpc2Ugc2VydmVyIGNhbGxiYWNrcyB3aWxsIG5vdCB3b3JrLlxyXG4gICAgICAgIGpQcm94eS5vbignbm9PcCcsICgpID0+IHsgLyogKi8gfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGh1YkNvbm5lY3Rpb24gPSBuZXcgU2lnbmFsUkNvbm5lY3Rpb24oakNvbm5lY3Rpb24sIGpQcm94eSwgdGhpcy5fem9uZSwgY29uZmlndXJhdGlvbik7XHJcblxyXG4gICAgICAgIHJldHVybiBodWJDb25uZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25uZWN0KG9wdGlvbnM/OiBJQ29ubmVjdGlvbk9wdGlvbnMpOiBQcm9taXNlPElTaWduYWxSQ29ubmVjdGlvbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24ob3B0aW9ucykuc3RhcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvZ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogU2lnbmFsUkNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkUXMgPSBKU09OLnN0cmluZ2lmeShjb25maWd1cmF0aW9uLnFzKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplZFRyYW5zcG9ydCA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZ3VyYXRpb24udHJhbnNwb3J0KTtcclxuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ubG9nZ2luZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coYENyZWF0aW5nIGNvbm5lY3Rpbmcgd2l0aC4uLmApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coYGNvbmZpZ3VyYXRpb246W3VybDogJyR7Y29uZmlndXJhdGlvbi51cmx9J10gLi4uYCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgY29uZmlndXJhdGlvbjpbaHViTmFtZTogJyR7Y29uZmlndXJhdGlvbi5odWJOYW1lfSddIC4uLmApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coYGNvbmZpZ3VyYXRpb246W3FzOiAnJHtzZXJpYWxpemVkUXN9J10gLi4uYCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgY29uZmlndXJhdGlvbjpbdHJhbnNwb3J0OiAnJHtzZXJpYWxpemVkVHJhbnNwb3J0fSddIC4uLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7IC8qICovIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvZyhzdHI6IHN0cmluZykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1lcmdlKG92ZXJyaWRlczogSUNvbm5lY3Rpb25PcHRpb25zKTogU2lnbmFsUkNvbmZpZ3VyYXRpb24ge1xyXG4gICAgICAgIGNvbnN0IG1lcmdlZDogU2lnbmFsUkNvbmZpZ3VyYXRpb24gPSBuZXcgU2lnbmFsUkNvbmZpZ3VyYXRpb24oKTtcclxuICAgICAgICBtZXJnZWQuaHViTmFtZSA9IG92ZXJyaWRlcy5odWJOYW1lIHx8IHRoaXMuX2NvbmZpZ3VyYXRpb24uaHViTmFtZTtcclxuICAgICAgICBtZXJnZWQudXJsID0gb3ZlcnJpZGVzLnVybCB8fCB0aGlzLl9jb25maWd1cmF0aW9uLnVybDtcclxuICAgICAgICBtZXJnZWQucXMgPSBvdmVycmlkZXMucXMgfHwgdGhpcy5fY29uZmlndXJhdGlvbi5xcztcclxuICAgICAgICBtZXJnZWQubG9nZ2luZyA9IHRoaXMuX2NvbmZpZ3VyYXRpb24ubG9nZ2luZztcclxuICAgICAgICBtZXJnZWQuanNvbnAgPSBvdmVycmlkZXMuanNvbnAgfHwgdGhpcy5fY29uZmlndXJhdGlvbi5qc29ucDtcclxuICAgICAgICBtZXJnZWQud2l0aENyZWRlbnRpYWxzID0gb3ZlcnJpZGVzLndpdGhDcmVkZW50aWFscyB8fCB0aGlzLl9jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscztcclxuICAgICAgICBtZXJnZWQudHJhbnNwb3J0ID0gb3ZlcnJpZGVzLnRyYW5zcG9ydCB8fCB0aGlzLl9jb25maWd1cmF0aW9uLnRyYW5zcG9ydDtcclxuICAgICAgICBtZXJnZWQuZXhlY3V0ZUV2ZW50c0luWm9uZSA9IG92ZXJyaWRlcy5leGVjdXRlRXZlbnRzSW5ab25lIHx8IHRoaXMuX2NvbmZpZ3VyYXRpb24uZXhlY3V0ZUV2ZW50c0luWm9uZTtcclxuICAgICAgICBtZXJnZWQuZXhlY3V0ZUVycm9yc0luWm9uZSA9IG92ZXJyaWRlcy5leGVjdXRlRXJyb3JzSW5ab25lIHx8IHRoaXMuX2NvbmZpZ3VyYXRpb24uZXhlY3V0ZUVycm9yc0luWm9uZTtcclxuICAgICAgICBtZXJnZWQuZXhlY3V0ZVN0YXR1c0NoYW5nZUluWm9uZSA9IG92ZXJyaWRlcy5leGVjdXRlU3RhdHVzQ2hhbmdlSW5ab25lIHx8IHRoaXMuX2NvbmZpZ3VyYXRpb24uZXhlY3V0ZVN0YXR1c0NoYW5nZUluWm9uZTtcclxuICAgICAgICBtZXJnZWQucGluZ0ludGVydmFsID0gb3ZlcnJpZGVzLnBpbmdJbnRlcnZhbCB8fCB0aGlzLl9jb25maWd1cmF0aW9uLnBpbmdJbnRlcnZhbDtcclxuICAgICAgICByZXR1cm4gbWVyZ2VkO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=