frontend-tutorial-framework/src/app/services/processlog.service.ts

35 lines
1023 B
TypeScript

import { Injectable } from '@angular/core';
import { WebSocketService } from './websocket.service';
import { LogMessage } from '../message-types/log-message';
import { ProcessLogMessage } from '../message-types/process-log-message';
import { config } from '../config';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class ProcessLogService {
newLogs = new BehaviorSubject<LogMessage>(config.console.defaultLogs);
showLiveLogs = config.console.showLiveLogs;
constructor(private webSocketService: WebSocketService) {
this.webSocketService.connect();
this.webSocketService.observeKey<ProcessLogMessage>('process.log.new').subscribe(
message => this.newLogsHandler(message)
);
}
emitNewLogsIfNoLiveLogs(logs: LogMessage) {
if (!this.showLiveLogs) {
this.newLogs.next(logs);
}
}
newLogsHandler(message: ProcessLogMessage) {
if (this.showLiveLogs) {
this.newLogs.next({
stdout: message.stdout,
stderr: message.stderr
});
}
}
}