You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
944 B
TypeScript
35 lines
944 B
TypeScript
import { Injectable } from '@angular/core';
|
|
import { Observable, Observer } from 'rxjs';
|
|
import { map, catchError } from 'rxjs/operators';
|
|
import * as socketIo from 'socket.io-client';
|
|
|
|
export interface Socket {
|
|
on(event: string, callback: (data: any) => void);
|
|
emit(event: string, data: any);
|
|
}
|
|
|
|
@Injectable()
|
|
export class SocketService {
|
|
socket: Socket;
|
|
loopMonitor: any;
|
|
observer: Observer<any>;
|
|
|
|
startLoopMonitor(): Observable<any> {
|
|
// this.loopMonitor = socketIo('http://localhost:3000/loopMonitor');
|
|
this.loopMonitor = socketIo('/loopMonitor');
|
|
this.loopMonitor.emit('start');
|
|
this.loopMonitor.on('message', (res) => { this.observer.next(res.message); });
|
|
return this.createObservable();
|
|
}
|
|
|
|
createObservable(): Observable<any> {
|
|
return new Observable<any>(observer => { this.observer = observer; });
|
|
}
|
|
|
|
stopLoopMonitor() {
|
|
this.loopMonitor.emit('end');
|
|
this.loopMonitor = null;
|
|
}
|
|
|
|
}
|