introduce server sent events services
This commit is contained in:
8
src/events/events.module.ts
Normal file
8
src/events/events.module.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import { Module } from '@nestjs/common';
|
||||||
|
import { EventsService } from './events.service';
|
||||||
|
|
||||||
|
@Module({
|
||||||
|
providers: [EventsService],
|
||||||
|
exports: [EventsService],
|
||||||
|
})
|
||||||
|
export class EventsModule {}
|
||||||
18
src/events/events.service.spec.ts
Normal file
18
src/events/events.service.spec.ts
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import { Test, TestingModule } from '@nestjs/testing';
|
||||||
|
import { EventsService } from './events.service';
|
||||||
|
|
||||||
|
describe('EventsService', () => {
|
||||||
|
let service: EventsService;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
const module: TestingModule = await Test.createTestingModule({
|
||||||
|
providers: [EventsService],
|
||||||
|
}).compile();
|
||||||
|
|
||||||
|
service = module.get<EventsService>(EventsService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be defined', () => {
|
||||||
|
expect(service).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
44
src/events/events.service.ts
Normal file
44
src/events/events.service.ts
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { EventEmitter } from 'events';
|
||||||
|
import { fromEvent, Observable } from 'rxjs';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class EventsService {
|
||||||
|
private readonly emitter: EventEmitter;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.emitter = new EventEmitter();
|
||||||
|
}
|
||||||
|
|
||||||
|
private subscribe(event: string): Observable<unknown> {
|
||||||
|
return fromEvent(this.emitter, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
private emit(event: string, data: any): void {
|
||||||
|
this.emitter.emit(event, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
subscribeUserPrivilegeUpdate(vatsimId: string): Observable<unknown> {
|
||||||
|
return this.subscribe(`/users/${vatsimId}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
emitUserPrivilegeUpdate(vatsimId: string): void {
|
||||||
|
this.emit(`/users/${vatsimId}`, {});
|
||||||
|
}
|
||||||
|
|
||||||
|
subscribeAirportRenew(): Observable<unknown> {
|
||||||
|
return this.subscribe('/airports/renew');
|
||||||
|
}
|
||||||
|
|
||||||
|
emitAirportRenew(): void {
|
||||||
|
this.emit('/airports/renew', {});
|
||||||
|
}
|
||||||
|
|
||||||
|
subscribeArrivalSequenceUpdate(icao: string): Observable<unknown> {
|
||||||
|
return this.subscribe(`/airports/arrival/${icao}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
emitArrivalSequenceUpdate(icao: string): void {
|
||||||
|
this.emit(`/airports/arrival/${icao}`, {});
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user