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 ,HttpTransportType} from '@aspnet/signalr'; import { AppConfig } from "../shared/app.config"; @Injectable() export class EventService { public event:Subject = new Subject(); 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`, { transport: HttpTransportType.WebSockets, // accessTokenFactory: () => { // return oauthService.getAccessToken(); // }, skipNegotiation:true }).configureLogging(LogLevel.Information).build(); this._connection.on('event', eventMessage => { this.event.next(eventMessage); }); this._connection.start().then(() => { var accessToken = oauthService.getAccessToken(); if (accessToken) { this._connection.send('authenticate', oauthService.getAccessToken()); } }); } }