Длинный опрос в node.js - как «тайм-аут» отложенных запросов, если данные недоступны? - PullRequest
5 голосов
/ 27 марта 2012

Я пытаюсь внедрить сервер длинных запросов http в Node.js и не знаю, как закрыть / закрыть отложенные запросы, если истекло время ожидания.

3 возможных решения приходят мне на ум:

  1. Сохраните запрос pendingRequest с отметкой времени в хеш-функции / объекте, затем вызовите setIntervall, чтобы каждые 1/2 / х секунд удалялись запросы pendingRequest, если отметка времени слишком старая.
  2. установить таймаут для соединения через сокет

Оба решения не кажутся очень разумными, так каков был бы способ Node.js добиться чего-то подобного?

1 Ответ

5 голосов
/ 28 марта 2012

Почему это не звучит разумно?В частности, установка тайм-аута для сокета, кажется, имеет смысл для меня:

  1. Для этого есть встроенный метод
  2. Anсобытие срабатывает по истечении времени ожидания соединения, позволяя вам выполнить любую необходимую очистку (например, вызвать end / destroy в сокете)

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

Вас могут заинтересовать эти статьи, каждая из которых обрабатывает истекающие соединения по-разному:

...