Мне интересно, как Facebook передает данные в браузер, как в ленте новостей. Новые данные отображаются вверху фида без перезагрузки страницы или нажатия кнопки
Достигает ли Facebook этого путем опроса своего сервера через AJAX через заданный интервал или они каким-то образом вытесняют новые данные с сервера клиенту неспровоцированным?
Если да, то какой язык или API они используют для этого?
Как facebook передает данные в ленту новостей?
Ответ 1
Он на самом деле называется "длинный опрос", или "комета" . Существуют различные способы выполнения push-сервера, но наиболее распространенным способом является сохранение соединения при получении данных (у него есть недостатки, так как у браузера есть предел количество открытых подключений к хосту). Facebook открыла веб-серверы Tornado, который может обрабатывать множество открытых подключений (что может быть проблемой: у вас много пользователей, но вы используете apache, например). В тот момент, когда вы получаете ответ AJAX, вы просто выполняете новый запрос, ожидая следующего ответа.
Ответ 2
По сути, код выполняет вызов AJAX на своих серверах и либо ожидает ответа, который запускает другой запрос, опросы по таймеру, либо они открывают веб-узел для приема данных, как только он будет нажат. Это, конечно, для "новых" данных, отображаемых вверху фида. Когда страница будет достигнута внизу, они просто сделают еще один вызов AJAX, чтобы получить следующие n элементов.
Ответ 3
Они подталкивают его с помощью AJAX, и они используют (по крайней мере, они ИСПОЛЬЗУЮТСЯ для использования), бесконечную прокрутку.
Итак, вы загрузите свою страницу, и они сделают первоначальный вызов на сервер для загрузки некоторых сообщений на основе того, кто вошел в систему, скажем, с помощью структуры, такой как JQuery:
http://api.jquery.com/jQuery.ajax/
И затем, когда вы прокрутите вниз, они заметят, когда вы приближаетесь к нижней части страницы, и им нужно загрузить больше, чтобы вы не остались без данных, а затем они совершают другой вызов автоматически. Это называется бесконечной прокруткой и отслеживает, где вы находитесь в DOM:
Только один пример: http://ajaxian.com/archives/implementing-infinite-scrolling-with-jquery