路由间事件通信问题,通过事件监听器问题
...
const EventEmitter = require('events')
const eventBus = new EventEmitter()
fastify.get('/', (request, reply) => {
// 创建 sse (`EventSource`)事件流
const sseStream =new eventSourceStream();
// eventBus 添加 ‘evt’ 事件监听器
const handleEvt = ()=>{
sseStream.write({
??????event:'visit',
??????data:?new Deta().getTime(),
})
};
/* **问题在这里每次访问该路由,都会向eventBus添加监听器,导致监听器累计添加,多次触发;预期只想触发一次,该如何实现 sse推送** */
eventBus.on('evt',handleEvt)
sseStream.write()
reply.type('text/event-stream').send(sseStream)
})
// 访问 ‘/visit’时触发,eventBus 上的 ‘evt' 事件,进而触发推送
fastify.get('/visit', (request, reply) => {
eventBus.emit('evt')
reply.send({ hello: 'world' })
})
...