Ответ 1
Я голосую за долгосрочную стратегию: каждый клиент открывает запрос на сервер, но сервер никогда не разрывает соединения и время от времени отправляет куски java- script.
Постоянные запросы AJAX убьют ваш сервер.
Я хочу сделать что-то очень похожее на обновление Google Doc в реальном времени - где все пользователи могут "сразу" видеть действия других пользователей в документе.
Чтобы достичь этого, мои идеи до сих пор:
Я хотел бы знать, что другие люди пытаются достичь этого эффекта. Каков наилучший способ сделать это?
Вся помощь приветствуется.
ПРИМЕЧАНИЕ. Я не ищу в реальном времени решение для редактирования документов. Я ищу решение той же концепции, что Google делает с их Документами. Я фактически использую это решение несколько иначе.
Я голосую за долгосрочную стратегию: каждый клиент открывает запрос на сервер, но сервер никогда не разрывает соединения и время от времени отправляет куски java- script.
Постоянные запросы AJAX убьют ваш сервер.
Проверьте google mobwrite. Это библиотека, которая позволяет совместное редактирование html-форм с помощью операционных преобразований.
Получение событий, отброшенных с сервера, является легкой частью, есть много способов сделать это. Обеспечение того, чтобы государство было последовательным для всех клиентов, это сложная часть. То, в которое входит алгоритм операционного преобразования.
Ajax-подход - это один из способов. Вы можете реализовать его, как приложения чата. Фактический способ будет зависеть от просмотра данных. Короче
Будет ли он интенсивным по производительности или не будет во многом зависеть от того, как структурировать все.
Другой вариант - это веб-сокеты. Не использовали его лично, но если у вас есть контроль над тем, какой браузер будут использовать ваши пользователи, вы можете сделать это. Он позволяет серверу передавать данные в браузер. Некоторые ссылки: Web Sockets JS и Веб-сокеты в Firefox
Другой альтернативой является Orbited:
Орбитат обеспечивает чистую JavaScript/HTML-сокет в браузере. Это веб-маршрутизатор и межсетевой экран, который позволяет интегрировать веб-страницы приложения с произвольными внутренними системы. Вы можете реализовать любую сеть протокола в браузере без прибегая к плагинам.
Orbited - это демон HTTP, который оптимизирован для долговременной кометы соединения. Он предназначен для легко интегрируется с новыми и существующих приложений. Orbited позволяет вы можете писать в режиме реального времени в Интернете приложений, таких как чат или клиента обмена мгновенными сообщениями без с помощью любых внешних плагинов, таких как Flash или Java.
Если ваши пользователи используют только современные браузеры, я бы попробовал стандарт websocket, поставляемый с HTML 5. Все больше и больше браузеров будут поддерживать его в будущем, и такие компании, как Google и Apple, работают над этим. Здесь начинается учебник: http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/
Если вы не хотите использовать веб-сокеты, потому что они не поддерживаются широко, вам нужно посмотреть Comet. Как это делают Документы Google.
EtherPad был открыт с открытым исходным кодом, если вы ищете текстовый редактор с совместным использованием в реальном времени.
Один из способов ограничить число запросов ajax - это умение с их интервалом. Вам не нужно делать запрос каждую секунду. Когда вы получите ответ с активностью, выполните другой запрос за 1 секунду. Если нет активности, затем 2 секунды, затем 4 и т.д., Максимум 30 секунд между запросами. Когда происходят обновления, reset таймер. В основном, пространство ваших запросов разумным способом сделать GUI выглядеть как можно более отзывчивым.
Я рекомендую использовать инфраструктуру Comet, например Atmosphere. Он автоматически выберет транспортный механизм для ваших сообщений, который может быть веб-сайтами, если вам повезет (но поскольку это отвлечено, вам не нужно беспокоиться). В любом случае, это большое значение, если вам не нужно иметь дело с отдельными запросами/ответами и всеми источниками ошибок и ошибками браузера, с которыми вы столкнетесь. Я был здесь. Там есть драконы.: -)
Также посмотрите на pubsubhubbub - http://code.google.com/p/pubsubhubbub/ Посмотрите видео для краткого введения.
Вы также можете взглянуть на ShareJS оперативную трансформационную библиотеку и Derby, который является структурой, основанной на sharejs. Они оба имеют node.js backends - sharejs был написан инженером Google Wave.