使用Redis长时间轮询HTTP Node.js

时间:2018-03-20 14:30:58

标签: node.js http express redis long-polling

我正在为Express应用程序实现HTTP Long Polling,但是我遇到了错误。以下是应用程序的行为方式:

该应用程序是一个类似Evernote的用户可以将新笔记发布到应用程序[Note(txt,author,date)]。用户可以订阅(GET / subscribe /:author)给作者,所以当作者发布新笔记时,他应该收到GET / subscribe /:author的回复。

我达到了这个目的但是有任何注意事项(不是好作者)但是当我提出一个比较来看看好的作者是否发布了这个注释时我有一个问题。 这是我的代码:

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")

这是一个有问题的场景:

  • 用户订阅“john”(GET / subscribe / john)
  • “alex”发布新笔记(POST / notes)#Server不回复
  • “john”发布新笔记(POST / notes)#Server错误:“发送后无法设置标题。”

如何告诉我的服务器:

if(note.author == goodAuthor) {
    res.send(data)
} else {
    Don't()
}

感谢您的帮助!

0 个答案:

没有答案