2013-04-24 2 views
0

После целого дня исследования на рамах/обертках node.js в реальном времени (derby.js, meteor, socketIO ...) Я понял, что более старомодный (извините) способ успокоительного API подходит всем мои потребности.Потоковая передача документа MongoDB с помощью HTTP-ответа?

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

Но вот проблема:

ли простой документ запрос потоковой работа с обычным запросом HTTP/ответ моделью или мы должны установить постоянный сокет-соединение для потоковой передачи всех документов клиента?

Примечание. Мне нужно загрузить документы только по вызову ajax - без необходимости вносить новые документы клиенту (так что действительно не нужно быть в режиме реального времени).

Есть ли что-нибудь особенное, чтобы рассмотреть?

ответ

1

Вы можете передавать результаты запроса с помощью стандартных HTTP-запросов/откликов API.

Общая последовательность вызовов:

res.writeHead(<header content>) 
res.write(<data>) 
... 
res.write(<data>) 
res.end(); 

Но вы делаете эти вызовы асинхронно, движимые потоковые событиями из вашего запроса.

+0

Большое спасибо. В то время как я читал об игровой инфраструктуре 2 часа назад, я понял, что кодировка заголовка HTTP-ответа должна быть установлена ​​на «chunk». Затем, когда я проанализировал некоторые сайты, сделанные с помощью express.js, я увидел, что это тоже использовалось - поэтому выражение, похоже, использует «куски» в качестве значения по умолчанию. Таким образом, в то время как документы mongoDB извлекаются из базы данных, поставляются в виде потока, все документы могут быть помещены в ответ HTTP (будучи «кусками»). Когда поток завершается, ответ HTTP помечен как готовый и готовый к представлению. Я думаю, что это точно так же, как вы упомянули, правда? – JoeFrizz

+0

@JoeFrizz Да, это правильно. – JohnnyHK

Смежные вопросы