2010-06-30 5 views
3

после целого дня поисков, я хотел бы поговорить о лучшем решении для онлайн-чата.Онлайн-чат - опрос Ajax или обратный Ajax

Это то, что я знаю:

Ajax опрос старой, потребляющая полоса пропускания, а не масштабируемый способ сделать это. Он запрашивает новые данные на сервере каждые X секунд. Это подразумевает один запрос к базе данных каждые X секунд * number_of_connected_users.

Для обратного Ajax и одного из его приложений (кометы) требуется настраиваемый веб-сервер или выделенный кометный сервер, который может обрабатывать количество длинных http-соединений number_of_connected_users.

Мой фактический сервер: 1 процессор Xeon, 1 ГБ оперативной памяти и 1 Гбит/с полосы пропускания. Сервер является виртуальной машиной (следовательно, очень масштабируемой).

Мне нужно решение, которое может масштабироваться с сервером и будущей растущей базой пользователей.

Мои сомнения:

  • Сколько метод Аякса опроса может повлиять на мое использование Bandwith?

  • Каким образом я могу оптимизировать опрос ajax, чтобы сделать запрос db только в случае необходимости?

  • Может ли компьютер кометы запускаться на одной машине веб-сервера (Apache)?

  • С кометным способом мне по-прежнему нужен интервал для выполнения запросов в базе данных, а затем отправьте ответ, так где же в реальном времени?

  • С моим фактическим сервером, может ли работать комета?

Заранее спасибо.

ответ

1

Вы не должны использовать опрос, если можете уйти с ним. Он забивает ресурсы как на сервере, так и на клиенте. Сервер должен делать больше запросов к базе данных с опросом, больше проверок, чтобы увидеть, изменились ли данные.

Метод опроса ajax также генерирует более ненужные запросы. При опросе вы используете память и процессор. Комета (если она выполнена правильно) использует только память.

Возможно, сервер кометы не работает под Apache. Apache, похоже, не предназначен для длительных запросов. Я бы рекомендовал реализовать ваш кометный сервер в рубине (используя EventMachine) an example, в Python (используя Twisted) или в C.

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

0

Я пишу свой сайт на PHP.

Итак, мне нужно запустить сервер (например, скрученный) и написать приложение для чата в python? Это приложение должно позаботиться о входящем аякс-запросе и направить новые данные клиентам.

Если я хорошо понимаю, этот подход не нуждается в базе данных, верно?

+0

Это правильно. Проблема с apache заключается в том, что она не поддерживает длительные запросы, поскольку она следует парадигме потока на запрос. Это будет разбито на несколько соединений. – Maz

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