Angular socket: 1 emit - 1 subcribe на него - 2 реакции
Доброе утро, буду очень благодарна если кто то сможет мне помочь. Ситуация следующая: у нас есть socket.on. Внутрь передается функция которая емитит данные. В моем случае они равны undefined. В компоненте происходит подписка на этот емит, я получаю данные и вывожу их. В какой то момент по неизвестной мне причине у меня происходит 1 емит, но 2 реакции на него в подписке. Как такое может быть? И как ограничится только одной реакцией? (Tape никакого эффекта не дает)
socketService {
public connectToRequestHub(): void {
this.dataChangeHubProxy.on('newRequestArrived', () =>{
this.onATRequestChanges.emit();
});
}
public startWsConnection(): void {
this.connection = $.hubConnection();
this.dataChangeHubProxy =
this.connection.createHubProxy('DataChangeHub');
this.connection.url =
this.appService.baseUrl.value + environment.signalrURL;
this.connection
.start()
.done(() => {
this.registerSession();
this.registerChangeRequest();
this.connectionStarted$.next(true);
})
}
public closeConnections(): void {
if (this.connection) {
this.connection.stop();
this.dataChangeHubProxy.off('matrixDataChanged');
this.connectionStarted$.next(false);
}
}
}
MyComponent {
public ngOnInit(): void {
this.socketSubscription = this.signalrService.connectionStarted$
.pipe(first((val) => !!val))
.subscribe(() => {
this.ATRequestReceived();
});
}
public ATRequestReceived(): void {
this.signalrService.onATRequestChanges.subscribe(() => {
this.newRequestReceived();
});
}
}