ng2-signalr
Version:
70 lines • 12.9 kB
JavaScript
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=