Является ли длительный опрос наиболее эффективным способом создания веб-приложения в реальном времени?

Я хочу создать такое приложение:

http://collabedit.com/

Каков наиболее эффективный способ создания этого приложения реального времени?

Вспышка? Долгий опрос? Http Streaming? или что-то другое?

Спасибо ;)


person xRobot    schedule 13.03.2010    source источник


Ответы (3)


На данный момент, вероятно, лучшим решением будет длинный опрос. Многие известные сайты уже давно внедрили опросы, включая Facebook, Google и eBay. Не у всех в браузерах установлен / включен Flash. В будущем веб-сокеты может облегчить нам работу.

Обновление: на момент написания этой статьи реализован WebSocket API в последней бета-версии WebKit (Chrome / Safari) и Firefox 4. Существует также общедоступная сборка моментальных снимков Opera , доступная для загрузки с реализацией API. Это означает, что тестирование API широко доступно. Для получения дополнительной информации см. этот ответ.

person Andy E    schedule 13.03.2010
comment
+1 Люблю долгие опросы. Будущее может быть другим, но я бы не стал использовать Flash. - person Plynx; 14.03.2010
comment
Я использовал phpfreechat (который использует длинный опрос) и всего с 20 людьми это очень-очень-очень медленно !! Почему ? Мне нужно создать приложение в реальном времени для миллионов людей одновременно !! - person xRobot; 14.03.2010
comment
@xRobot: Вы проверили FAQ? [phpfreechat.net/faq] Он предлагает решение одной проблемы производительности, связанной с доступом к диску. Кроме того, вам потребуется очень мощный сервер для одновременной обработки миллионов подключений. Обычные HTTP-запросы открыты, ›получают данные,› закрываются, поэтому одновременных подключений меньше. При длительном опросе он открыт- ›дождитесь данных-› ›закрытие, поэтому одновременное выполнение большого количества запросов почти гарантировано. Серверы могут обрабатывать только ограниченное количество одновременных подключений, и вы получаете то, за что платите, если вы уловите мой уклон! - person Andy E; 14.03.2010
comment
Я не думаю, что Google использует Long-Poll для реализации Comet. По крайней мере, GMail реализует комету с XHR-стримингом. - person Morgan Cheng; 21.03.2010
comment
@ Морган Ченг: Верно. Я слышал, что потоковая передача XHR была проблематичной с Internet Explorer, но, похоже, Google нашел способ обойти это. alex.dojotoolkit.org/2006/02/ - person Andy E; 21.03.2010
comment
+1, лучший способ сделать это полностью кроссбраузерно - это длинный опрос, который реализован на нескольких серверах комет. Хак, упомянутый для gtalk, - это потоковая передача htmlfile, которая отличается и имеет свои ограничения: cometdaily.com/2007/11/18/ie-activexhtmlfile-transport-part-ii - person jvenema; 22.03.2010
comment
Хотя недавний webkit может его поддерживать, старые устройства инфраструктуры посередине могут по-прежнему блокировать протокол WS. Разумно рассмотреть возможность возврата к xhr-polling. - person ZeroCool; 17.05.2015

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

http://socket.io/

эта замечательная библиотека делает создание приложений в реальном времени невероятно простым! и существуют различные реализации на стороне сервера: Python (Tornado), Java, Google GO, Rack (Ruby), помимо основной реализации в Node.js (серверный JavaScript)

person Benja    schedule 03.05.2011
comment
Ага..!! Уже использовал его как с Java, так и с NodeJS. его блестящий инструмент. Для java мы можем использовать реализацию netty server. - person agpt; 17.11.2014

Я не думаю, что длинный опрос - самый эффективный способ использовать Comet. В любом случае он отправляет новый HTTP-запрос после получения ответа. Это стоит больше дополнительных HTTP-запросов, чем HTTP-потоковая передача.

Но длинный опрос может быть более надежным и простым в реализации, чем потоковая передача HTTP. Согласно этой статье в Google Code, потоковая передача HTTP может не работать, если промежуточный HTTP-прокси буферизует содержимое.

Интересно, что GMail не использует длинный опрос. С помощью сниффера Http становится ясно, что он использует потоковую передачу HTTP для Comet.

person Morgan Cheng    schedule 22.03.2010
comment
Также Facebook не использует длинные опросы? Вы знаете какой-нибудь пример потоковой передачи http? Танс ^ _ ^ - person xRobot; 22.03.2010
comment
Я лично не тестировал, но мне сказали, что чат в Facebook реализован с помощью длительного опроса. GMail - это Http Streaming. То же самое и с Outlook Web Access. - person Morgan Cheng; 22.03.2010
comment
@xRobot, если вы с нетерпением ждете практических рекомендаций, этот URL-адрес - хорошее резюме : cometdaily.com/2007/12/11/ - person Morgan Cheng; 22.03.2010