Подтвердить что ты не робот

Как работает запись в режиме реального времени в Google Wave?

Я уверен, что Wave не опросит сервер каждые миллисекунды, чтобы узнать, что другой пользователь набрал что-то... так как я могу узнать, что набирает другой человек, когда они печатают? И без ограничения полосы пропускания.

4b9b3361

Ответ 1

Постоянный HTTP, Comet

Сохраняйте ваше HTTP-соединение в живых и отправляйте символы по мере их ввода

* Изменить в 2014 году: также взгляните на WebSocket и HTTP/1.1 Обновить заголовок. Браузеры начали реализовывать это примерно в 2010 году, поэтому я добавляю это к оригинальному ответу.

Ответ 2

Вероятно, они используют веб-сокеты, а также события, отправленные сервером: http://www.w3.org/TR/websockets Основной протокол можно найти (как черновик) в IETF.

Обновление: похоже, WebSockets еще не реализована; и видео из Google I/O (перейдите к 11:00) рассказывает о долговечном HTTP-запросе GET.

Ответ 3

Server Push в GWT

Нагрузка сервера - это парадокс ожидания, ответа, закрытия, повторного открытия:

  • Подождите: когда код GWT вызывает вызов на ваш сервер для некоторых данных, которые вы еще нет, заморозить (ждать)

  • Ответ: как только запрашиваемые данные доступно, ответьте на него

  • Закрыть: затем закройте соединение.

  • Повторно открыть: как только ваш код GWT получит ответ, немедленно откройте новое соединение для запроса следующего события.

Ответ 4

Смотрите видео Google Wave: Работает на GWT вокруг в минуту 55 (ближе к концу)

В: Как вы реализуете постоянные соединения, длительные жизненные http-соединения

A: План будущего: веб-сокеты HTML5. Длительный срок. Это то, что мы используем в данный момент.

Q: Есть ли платформа или библиотека для этого, мы можем скачать и играть с?

A: Не уверен. Не думайте так

P.S.: Это то, что он сказал. Для меня это не имело большого смысла ( "планы на будущее" против "использования в данный момент" ). Любой родной английский динамик может захотеть проверить, правильно ли я его переписал?

Ответ 5

Чистая спекуляция, но может ли она использовать события Server Side DOM из спецификации HTML 5?

Ответ 6

вся причина для WebSockets заключается в том, чтобы браузер поддерживал двунаправленный сокет, открытый для сервера, чтобы можно было использовать связь в режиме реального времени. Когда кто-то на другом конце, в волновом клиенте, запускает событие, которое отправляется на сервер, а сервер, в свою очередь, смотрит, кто должен также получить событие и передать ему событие, в этом случае набранную букву.

WebSocket и Comet отличаются.

Гранвилль

Ответ 7

Вероятно, комета на данный момент websocket в будущем. Поскольку он работает в Firefox 3.5 и из того, что я читал, websocket доступен только в ночных сборках FF... Я мог ошибаться, хотя... поскольку он, похоже, вообще не работает в IE.

Ответ 8

Я потратил некоторое время на обратную разработку кода клиента Google Wave (бесстыдный плагин для http://antimatter15.com/misc/read/, который является общедоступным клиентом только для чтения для google wave для всех публичных волн без необходимости использования роботов или гаджетов, которые были намного полезнее месяц назад, когда Google не запускал обновления).

В любом случае Google использует структуру GWT с определенными аспектами библиотеки Google Closure (которая на самом деле открыта с открытым исходным кодом и документирована), и они используют библиотеку goog.net.BrowserChannel, которая из комментариев также используется для функций чата в gmail.

http://closure-library.googlecode.com/svn/docs/closure_goog_net_browserchannel.js.html

Ответ 9

Я бы предположил, что они используют запросы ajax. Сделайте XMLHttpRequest, который является асинхронным, и когда серверу есть что отправить браузер, обратный вызов javascript, который был зарегистрирован, получает данные и делает с ним все. Поэтому в основном браузер запрашивает следующее событие, обрабатывает его, повторяется бесконечно.