2009-05-09 2 views
2

Я ищу, чтобы реализовать что-то похожее на чат facebook/gmail. Я знаю, что они используют комету & jabber как свою технологию. Но я смущен о нескольких вещах.Расширенный чат-приложение

  1. Действительно ли мне нужен jabber? Могу ли я вместо этого использовать простую таблицу mysql с сообщениями, сообщением, отправлением и возвратом? Есть ли неэффективность в использовании mysql? Есть ли потеря производительности?

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

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

ответ

3

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

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

учебник Kirupa в (php5 сокеты + вспышка 8) http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm

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

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

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

1

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

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

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

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

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

Совершенно не знаешь о кометах, поэтому комментариев нет!

2

Действительно ли мне нужен jabber? Могу я вместо использовать простую таблицу mysql с, от к, сообщение, послано и recd? Есть ли любые недостатки в использовании mysql? Есть ли ли какая-либо потеря производительности?

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

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

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

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

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

+0

извините, эти ссылки не доступны в вкусный сейчас, не могли бы вы обновить –

Смежные вопросы