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'; @Injectable() export class WebNotificationService { connection: signalR.HubConnection; connectionisvalid: boolean = true; connectionbroken: boolean = false; func: Function; typestr: string; syncserviceUrl: string; milisecond: number; @BlockUI() blockUI: NgBlockUI; intervalfunc: any; constructor(private authService: AuthService, public http: HttpClient, @Inject('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'); }); } }