30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
|
import { Injectable } from '@angular/core';
|
||
|
import { IEventMessage } from '../models/event.message';
|
||
|
import { Subject } from 'rxjs';
|
||
|
import { OAuthService } from 'angular-oauth2-oidc';
|
||
|
import { HubConnection, HubConnectionBuilder, LogLevel } from '@aspnet/signalr';
|
||
|
import { AppConfig } from "../shared/app.config";
|
||
|
|
||
|
|
||
|
@Injectable()
|
||
|
export class EventService {
|
||
|
|
||
|
public event:Subject <IEventMessage> = new Subject<IEventMessage>();
|
||
|
private _connection: HubConnection = null;
|
||
|
private _apiEndPoint: string;
|
||
|
|
||
|
constructor(private oauthService: OAuthService, private appConfig: AppConfig) {
|
||
|
this._apiEndPoint = ""; //appConfig.getConfig("apiEndPoint");
|
||
|
this._connection = new HubConnectionBuilder().withUrl(`${this._apiEndPoint}/eventHub`).configureLogging(LogLevel.Information).build();
|
||
|
this._connection.start().then(() => {
|
||
|
var accessToken = oauthService.getAccessToken();
|
||
|
if (accessToken) {
|
||
|
this._connection.send('authenticate', oauthService.getAccessToken());
|
||
|
}
|
||
|
});
|
||
|
this._connection.on('event', eventMessage => {
|
||
|
this.event.next(eventMessage);
|
||
|
});
|
||
|
}
|
||
|
}
|