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