7

I have multiple Angular components that are subscribing to a SignalR hub connection. I have wrapped the SignalR hub connection object to an angular service, hubconnection.service.ts:

import { Injectable } from '@angular/core'; import { HubConnectionBuilder, HubConnection } from '@aspnet/signalr'; @Injectable() export class HubConnectionService { public MyHubConnection: HubConnection; constructor() { this.MyHubConnection = new HubConnectionBuilder() .withUrl('/sensorHub') .build(); this.MyHubConnection .start() .then(() => console.log('[HubConnectionService] Connection started')) .catch(err => console.log('[HubConnectionService] Error while starting connection: ' + err)); } } 

Now I have a component from where I want to subscribe to the data received through the SignalR hub, to do this I import my SignalR wrapper, and in the constructor I call the .on() method. To unsubscribe from that event I call the .off() method in the destructor:

export class RawdataComponent implements OnInit { constructor(private hubConnectionService: HubConnectionService) { } ngOnDestroy() { this.hubConnectionService.MyHubConnection.off('Broadcast'); } ngOnInit() { this.hubConnectionService.MyHubConnection.on('Broadcast', function(sender, message) { console.log('New message received: ' + message); }); } } 

When I initially access the page that is described by this component, everything works as expected (console.log() is logging for every message I receive).

When I leave the page, MyHubConnection.off('Broadcast'); is called. Then after I access the previous page again, the constructor is called and another subscription is made, but the previous one is not closed, and I get two console.log() calls.

Where's the mistake I'm making? Shouldn't MyHubConnection.off('Broadcast'); close the current subscription when I leave the page?

1
  • did you found any solution to this problem? Thanks Commented May 26, 2022 at 5:14

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.