Вопрос

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

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

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

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

Это было полезно?

Решение

Отличные вопросы, надеюсь, на выходных они не затеряются в стопке.Если вы хотите использовать флэш-память, у 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/

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

Совершенно ничего не знаю о комете, поэтому без комментариев!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top