'How to unsubscribe socket io in Angular
This how I connect client to server with socket io.
export class OverviewService {
socket:any;
readonly uri:string='http://localhost:4000';
constructor(private http: HttpClient) {
this.socket = io(this.uri);
}
and this when I call
getOnPeak(){
this.socket.emit('on_peak/today');
return new Observable((subscriber)=>{
this.socket.on('on_peak/today',(data:any)=>{
subscriber.next(data.onPeak.toFixed(2))
console.log('onPeak:'+data.onPeak.toFixed(2));
})
})
}
overview.ts
this.getOnPeekSub=this.overviewService.getOnPeak().subscribe(onPeak => {
this.onPeak = onPeak;
})
on ngOnDestroy i tried to use removeAllListeners(),removeListeners() and off() but it doesn't work .
Solution 1:[1]
getOnPeak(){
this.socket.emit('on_peak/today');
return new Observable((subscriber)=>{
this.socket.on('on_peak/today',(data:any)=>{
subscriber.next(data.onPeak.toFixed(2))
console.log('onPeak:'+data.onPeak.toFixed(2));
})
return function unsubscribe() {
this.socket.disconnect()
};
})
}
When you unsubscribe from the Observalbe, the socket will be closed. Read more here https://rxjs.dev/guide/observable (Disposing Observable Executions)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | enno.void |
