I am implementing an HTTP Long Polling for an Express app but i encounter an error. Here is how the app should behave:
The app is a Evernote like, users can POST new note to the app [Note(txt, author, date)]. Users can subscribe (GET /subscribe/:author) to an author, so when a author post a new note, he should receive the response of GET /subscribe/:author.
I achieved to do this but with any note (not the good author) but I have an issue when I put a comparaison to see if the note is posted by the good author. Here is my code:
subscribe.js
router.get('/:auteur', (req, res, next) => {
  const auteur = req.params.auteur;
  rc.lrange("notes", 0, -1, (err, reply) => {
    const notes = reply.map( note => { return JSON.parse(note) })
    const notesAuteur = notes.filter(note => note.auteur == auteur)
    subscriber.on("message", (channel, message) => {
      const noteRecu = JSON.parse(message)
      // if(noteReceived.author == authorAsked)
      if(noteRecu.auteur == auteur) {
        // Add this new note to old one
        notesAuteur.push(noteRecu)
        // Responde
        res.send(notesAuteur)
      }
    })
  })
})
subscriber.subscribe("notes_publish")
Here is a bugged scenario:
- user subscribe to "john" ( GET /subscribe/john )
 - "alex" post a new note ( POST /notes ) #Server don't respond
 - "john" post a new note ( POST /notes ) #Server error : "Can't set headers after they are sent."
 
How to tell my server :
if(note.author == goodAuthor) {
    res.send(data)
} else {
    Don't()
}
Thanks for your help !