Использование Node.js для отслеживания XMLHTTPRequests - PullRequest
0 голосов
/ 22 апреля 2011

Я только начал изучать Node.js и был очень заинтересован в его возможностях в реальном времени, особенно с Socket.io.С тех пор я написал очень простой скрипт для подключения к потоковому серверу Twitter и трансляции твитов всем подключенным клиентам.

Для создания этого я использовал http.createClient для подключения к stream.twitter.com и добавилв соответствующих обработчиках событий response и data.Все работает довольно хорошо.

Очевидно, что потоковый API Twitter в значительной степени выводит бесконечно загружаемую веб-страницу, и почему использование обработчика событий data работает довольно хорошо с ним.Однако возможно ли сделать другие типы веб-сайтов «потоковыми»?

Например, если клиент (браузер) периодически обновляет веб-сайт с помощью XMLHTTPRequest, можно ли отслеживать выходные данные этих запросов, используяHTTP API Node.js?Или подобное расширение Node.js?

Спасибо.

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

веб-сайтов периодически не используют XMLHTTPRequest. Клиенты периодически отправляют запросы XMLHTTP на URL-адрес.

Простой вызов http.request(options, callback) с правильными заголовками должен эмулировать XHR. Большинство из этих серверов также будут принимать обычные запросы POST или GET.

Если вы хотите, чтобы node.js подключался к серверу и имитировал браузер, то что-то вроде zombie вам пригодится. Он утверждает, что поддерживает XMLHTTPRequest.

0 голосов
/ 22 апреля 2011

Лучшим вариантом для вас будет использование веб-сокетов между вашей приборной панелью и сервером узлов. Таким образом, узел будет немедленно уведомлен о том, что что-то обновлено на вашей панели мониторинга (я предполагаю, что вы можете немного изменить свою панель мониторинга, чтобы принимать такие подключения, это будет не сложно, если у вас есть доступ).

Затем вы можете использовать длинный опрос на стороне клиента, то есть отправить запрос на сервер узла и подождать. Узел получит запрос и затем зарегистрирует событие для него. В тот момент, когда он получает обновления от приборной панели, он запускает событие, которое отправляет ответ всем клиентам по одному в ожидании.

Я бы рекомендовал взглянуть на http://github.com/andrewdavey/vogue. Это делает что-то похожее, но функциональность, конечно, отличается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...