import { router, publicProcedure } from '../trpc'; import { observable } from '@trpc/server/observable'; import { EventEmitter } from 'events'; import { WindowManager } from 'main/modules/window-manager'; const ee = new EventEmitter(); export const userRouter = router({ userList: publicProcedure.query(() => { // [..] ee.emit('greeting', `Greeted`) return [ { id: 1, name: 'John Doe', windowsLength: WindowManager.getWindowsLength(), }, { id: 2, name: 'Jane Doe', windowsLength: WindowManager.getWindowsLength(), }, ]; }), subscribeGreeting: publicProcedure.subscription(() => { return observable<{ text: string }>((emit) => { function onGreet(text: string) { emit.next({ text }); } ee.on('greeting', onGreet); return () => { ee.off('greeting', onGreet); }; }); }), });