Как непрерывно доставлять данные в один и тот же запрос - PullRequest
0 голосов
/ 12 марта 2020

Я относительно новичок в области серверных технологий, и я был поражен примером, который я видел сегодня.

Это пример, который представляет новый API, но я был поражен тем, как данные доставлялись через тот же запрос. Возможно, я подозреваю, что использовались потоки. Я пытался создать его с помощью res.write метода express, но на самом деле он не выполняет то, что мне нужно. Он не отправляет ответ, пока не будет прочитан весь поток.

https://fetch-abort-demo.glitch.me/

Как я могу реализовать это в приложении Node.JS / Express?

1 Ответ

0 голосов
/ 12 марта 2020

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

И поток выглядит следующим образом.

const it = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']

app.get('/stream', (req, res) => {
  let time = 100
  for (const i of it) {
    setTimeout(() => {
      res.write(i)
    }, time)
    time += 2000
  }
  setTimeout(() => {
    res.end()
  }, time + 2000)
})
...