мгновенные обновления браузера с помощью ajax / jquery - PullRequest
2 голосов
/ 21 апреля 2010

Я пытаюсь перепроектировать, как Facebook обрабатывает свои уведомления, когда, когда вы получаете сообщение, вы мгновенно получаете уведомление через браузер.

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

Ответы [ 2 ]

2 голосов
/ 21 апреля 2010

Техника на самом деле называется Длинный опрос . Это один из популярных методов Comet , позволяющий обойти ограничения традиционного опроса.

Вы можете проверить следующую публикацию переполнения стека для очень простого примера:


UPDATE:

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

0 голосов
/ 21 апреля 2010

Техника называется комета, или «серверный пуш»

В настоящее время существует 2 основных способа реализации кометы.

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

2) Второй подход, используемый Google, является потоковым. Это включает использование ajax, чтобы оставить зависший запрос, но ответ никогда не возвращается вам. Вместо этого сервер обновляет биты данных, и вы используете javascript для мониторинга изменений и запуска событий, основанных на добавляемых новых данных. В результате получается один очень длинный непрерывный поток данных, поступающий в документ, который никогда не закрывается, принимая новые данные, как они поступают.

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

Если вы хотите создать сайт Comet для производства, вам необходимо использовать неблокирующий асинхронный сервер ввода-вывода, например, один из следующих.

http://www.tornadoweb.org/ - питон

http://nodejs.org/ - javascript на стороне сервера

- или Google для комет-серверов.

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

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