Что лучше? Длинное TCP-соединение или длинный опрос? - PullRequest
1 голос
/ 20 июня 2009

Я планирую создать веб-чат на моем сайте. Я знаю два способа сделать это: один использует веб-клиент XMPP (через флэш-память, длинное TCP-соединение), а другой - способ facebook , длинный опрос.

Но Facebook собирается обновить свой чат для поддержки Jabber (XMPP), поэтому кто-нибудь может сказать, какой путь лучше? (включая обновление до XMPP)

Ответы [ 2 ]

2 голосов
/ 20 июня 2009

У меня были довольно хорошие результаты при длинных опросах в моих приложениях, но главный вопрос в том, столкнетесь ли вы с проблемой C10K . Если это так, то структурирование вашего кода для работы с такой интенсивной рабочей нагрузкой, скорее всего, будет доминировать над всеми другими соображениями проектирования, по крайней мере, в краткосрочной перспективе. : -)

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

0 голосов
/ 03 мая 2011

У них разные плюсы и минусы, например: для TCP требуется плагин (по крайней мере, до тех пор, пока веб-сокеты HTML5 не получат широкую поддержку), Long Polling будет менее производительным, и т. Д. вам порекомендуют избегать этого выбора , избегать разработки и настройки, связанной с каждым подходом, избегать будущих изменений в доступных технологиях (например, по мере поступления HTML5), используя библиотеку, абстрагирующую транспорт Используется метод , и выбирается лучший подход на основе возможностей клиента:

http://socket.io/

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

...