Расширенный чат веб-приложение - PullRequest
2 голосов
/ 09 мая 2009

Я ищу что-то похожее на чат в Facebook / Gmail. Я знаю, что они используют Comet & Jabber в качестве своей технологии. Но я запутался в нескольких вещах.

  1. Мне действительно нужен джаббер? Могу ли я вместо этого использовать простую таблицу mysql с from, to, message, sent и recd? Есть ли недостатки в использовании MySQL? Есть ли потеря производительности?

  2. Может ли комета быть реализована с использованием обычных веб-серверов? Нужно ли иметь несколько специальных серверов? AFAIK, apache + php не может обрабатывать слишком много открытых соединений? Стоит ли использовать простой опрос, будет ли это отрицательно влиять на мою систему? Что я могу использовать "из коробки" на обычных веб-хостингах? (Потому что, если я продам приложение чата, оно должно работать для большинства людей.)

  3. Каков наилучший (в настоящее время) способ реализации кометы? Является ли бесконечный iframe хорошей идеей? Не будет ли время ожидания php? Будет ли это кросс-браузерное решение или мне придется написать несколько уродливых хаков? Это приведет к загрузке сервера? Что используют Gmail и Facebook для постоянного подключения?

Ответы [ 3 ]

3 голосов
/ 09 мая 2009

Отличные вопросы, надеюсь, это не потеряется в стеке на выходных. Если вы хотите использовать flash, у kirupa есть хорошее руководство по использованию PHP и сокетов. Что касается кометы, я считаю, что у вас должна быть какая-то серверная реализация. На этом мои слабые знания заканчиваются прямо сейчас.

Простой пример опроса (jquery + asp.net) http://trappedinhoth.blogspot.com/2009/04/ajax-jquery-chat-demo.html

Учебник Кирупы (php5 сокеты + flash 8) http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm

Клиент с открытым исходным кодом для флеш-чата (Google, еще много чего) https://blueimp.net/ajax/

Информация о комете http://cometdaily.com/

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

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

Мне действительно нужен джаббер? Могу ли я вместо используйте простую таблицу mysql с from, чтобы, сообщение отправлено и записано? Здесь какие неэффективности в использовании MySQL? Является Есть ли потеря производительности?

Да, вам нужно использовать jabber, а не mysql. Вы можете прочитать [Конец архитектурной эры (время полного переписывания)]] [1] Stonebraker и др., Чтобы узнать, почему использование RDBMS плохо подходит.

Может ли комета быть реализована с использованием обычного веб-сервера? Мне нужно немного специальные серверы? ... Должен ли я использовать простой опрос, будет ли это иметь неблагоприятный влияние на мою систему? Что я могу использовать из коробки на обычных веб-хостах? Что используют Gmail и Facebook для постоянного подключения?

Комета - это немного туманный термин, но не о чем беспокоиться. Вам не нужны специальные серверы, вы не должны использовать опрос. Вы можете использовать [BOSH] [2] - это также то, что использует Facebook (и я подозреваю, что Gmail).

Используйте [JSJaC] [3] (или [my fork на Github] [4]) на стороне клиента и [ejabberd] [5] на стороне сервера. Оба поддерживают [BOSH] [6] (и [XMPP over BOSH] [7]), что означает, что вы можете напрямую устанавливать HTTP-соединения с вашим сервером XMPP, избегать опроса и обрабатывать большие нагрузки трафика.

Ссылки на все эти закладки в http://delicious.com/petef/stackoverflow-843889

1 голос
/ 09 мая 2009

Я думаю, что Jabber можно смело осмыслить как промежуточное ПО (мама), где MySQL, безусловно, является (постоянным хранилищем) бэкэндом. Это яблоки и апельсины.

Ни одно из мегамасштабных приложений web2.0 не может полагаться на RDBMS для обмена сообщениями в реальном времени, учитывая ограничения, которые встречаются из-за гарантий ACID для RDMBS, и его характеристик масштабирования. (Подумайте о разделении таблиц SQL на лету, чтобы добавить больше серверов, чтобы понять только одну из проблем.)

Самым важным фактором является долговечность сообщений в вашей системе. Должны ли они сохраняться вечно или только в течение определенного временного интервала. Учитывая, что это приложение чата, более чем вероятно, это последнее. Почему бы не использовать хранилище на основе памяти вместо СУБД?

Почему вы должны использовать Jabber? Ну, это своего рода стандарт, так что вы откроете возможности взаимодействия в будущем, даже если на данный момент это не проблема.

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

Совершенно невежественен относительно кометы, так что без комментариев!

...