node 路由间事件通信问题

路由间事件通信问题,通过事件监听器问题

...

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' })
})

...
阅读 210
评论 3月26日提问
    1 个回答

    那就添加的是否做下判断是否有加过吧

    评论 赞赏 3月26日