Сервер отправлял события нескольким клиентам — каждому клиенту отправлялись только соответствующие события

#javascript #node.js #http #eventemitter #event-stream

Вопрос:

Я интегрировал функцию отправки событий сервером в одно из приложений узла и использую ее для потоковой передачи событий, связанных с предоставлением учетной записи. Поэтому каждый пользователь отправляет разные запросы, и я хочу отправить пользователю только соответствующую информацию о событии. Я интегрировал SSE в приложение узла с помощью EventEmitter, и код выглядит следующим образом:

 export const trialEvents = (req, res) => {

    //setting response header for event stream
    res.writeHead(200, {
        "Connection": "keep-alive",
        "Content-Type": "text/event-stream",
        "Cache-Control": "no-cache",
        "X-Accel-Buffering":"no",
        "Access-Control-Allow-Origin":"*"
    });

    // event listener for writing to stream
    eventEmitter.on('accountProvision', function (data) {
        res.write("data: "   JSON.stringify(data)   "nn");
    });
}
 

Теперь из другой части контроллера, которая занимается деятельностью по предоставлению учетных записей, я запускаю событие, используя следующий код:

   eventEmitter.emit(
      'accountProvision',{
           "status":"error",
           "message":e
       }
   );
 

Теперь events маршрутизатор указывает на trialEvents метод, и клиент может успешно видеть события с сервера по мере их возникновения. Я хотел бы очистить поток событий, так как он будет транслировать соответствующие события только тогда, когда другой пользователь установит соединение с events конечной точкой, поэтому он будет получать только события, связанные с предоставлением их учетной записи.

Как мы можем это сделать ?