ekangularbase
Version:
Authentication service for usermanagement(oidc client)
121 lines (94 loc) • 3.71 kB
text/typescript
import { Injectable, Inject } from '@angular/core';
import * as signalR from "@aspnet/signalr";
import { AppConfig } from '../AppConfig/AppConfig';
import { AuthService } from '../auth/auth.service';
import { BlockUI, NgBlockUI } from 'ng-block-ui';
import { HttpHeaders, HttpParams, HttpClient } from '@angular/common/http';
import { Data } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { Subscription } from 'rxjs/Subscription';
import 'rxjs/Rx';
import { BehaviorSubject } from 'rxjs/Rx';
import { ConnectionIndicationService } from '../auth/ConnectionIndication.service';
import { LocalContainerObject } from '../interface/Interactive Component/LocalContainerObject';
()
export class WebNotificationService {
connection: signalR.HubConnection;
connectionisvalid: boolean = true;
connectionbroken: boolean = false;
func: Function;
typestr: string;
syncserviceUrl: string;
milisecond: number;
() blockUI: NgBlockUI;
intervalfunc: any;
constructor(private authService: AuthService,
public http: HttpClient,
('syncserviceurl') syncserviceUrl: string) {
this.syncserviceUrl = syncserviceUrl;
}
build() {
// alert('sss');
this.connection = new signalR.HubConnectionBuilder()
.withUrl(AppConfig.settings.syncserviceurl + "NotificationHub",
{
accessTokenFactory: () =>
this.authService.getAccessToken()
})
.build();
ConnectionIndicationService.ConnectionStatusChanged.subscribe(online => {
if (online) {
this.start();
// alert('start');
} else {
this.stop();
// alert('stop');
}
// alert('sss2');
});
// this.connection = new signalR.HubConnectionBuilder()
// .withUrl(AppConfig.settings.syncserviceurl+"NotificationHub", signalR.HttpTransportType.WebSockets)
// .build();
this.connection.serverTimeoutInMilliseconds = 3600000;
// this.ConnectionStatusChanged.next(false);
// this.connection.onclose((e)=>{
// // this.blockUI.start('Reconnecting...');
// // this.intervalfunc =setInterval(() => {
// // // this.ConnectionCheck();
// // }, 5000);
// // this.connectionisvalid=false;
// this.stop();
// });
return this.connection;
}
on(func: Function, typestr: string) {
this.func = func;
this.typestr = typestr;
this.connection.on("ClientMessage", data => {
let f = data as LocalContainerObject;
console.log(f);
// var blob = new Blob([JSON.stringify(f)], { type: 'text/csv' });
// saveAs(blob,"ssss.txt");
// this.messageService.add({severity:'Info', summary:'Info', detail:f.guid});
// alert(f.type);
if (f.type == typestr) { func(data); }
});
}
start() {
// alert('sss3');
this.connection.start().then(() => {
console.log('Hub Web Notification connection started');
}).catch(err => {
// alert('Error while establishing connection');
});
}
off() {
this.connection.off("ClientMessage");
}
stop() {
this.connection.stop().then(() => {
}).catch(function (err) {
alert('Error while establishing connection');
});
}
}