import { Injectable } from '@angular/core'; import { Socket } from 'socket.io-client'; import { Observable } from 'rxjs';
@Injectable() export class DataService { constructor(private socket: Socket) {}
getData(): Observable { return new Observable(observer => { this.socket.on('data', (data: Data[]) => { observer.next(data); }); this.socket.emit('getData'); }); } }
import { Controller, Get, UseInterceptors } from '@nestjs/common'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { DataService } from './data.service'; import { Data } from './data';
@UseInterceptors(CacheInterceptor) @Controller() export class DataController { constructor(private readonly dataService: DataService) {}
@Get('data') getData(): Observable { return this.dataService.getData().pipe( map(data => { this.socket.emit('data', data); return data; }), ); } }
@Component({
selector: 'app-data',
template:
,
})
export class DataComponent implements OnInit {
items: Data[];
constructor(private dataService: DataService) {}
ngOnInit() { this.dataService.getData().subscribe(data => { this.items = data; }); } }