2010-02-24 2 views
0

Я хочу, чтобы один пользователь на сайте мог общаться с другим пользователем на моем сайте Django. Я хочу, чтобы запросчик получил окно в реальном времени, в котором говорится: «Вы хотите пообщаться?»Опрос клиентов (обратный AJAX) для запросов чата в Django?

Как следующий клиент опрос подход звук:

user1 нажимает на потребляющие2 прозвище, порождающий запрос POST к некоторым/сообщениям/запросам, который создает сообщение типа CHAT_REQUEST в базе данных. Между тем, часть Javascript в браузере user2, неоднократно запрашивает сервер для обновлений сообщений. Когда он получает сообщение типа CHAT_REQUEST, он открывает всплывающее окно ...

Проблема с этим подходом, по-видимому, связана с доступом к базе данных.

Если клиент проводит опрос каждые 10 секунд, а 100 пользователей оставляют окна своего браузера открытыми, то есть 10 запросов к базе данных в секунду.

Было бы лучше хранить эти сообщения не в базе данных, а в ОЗУ Django или информации о сеансе? Или эта таблица базы данных будет кэшироваться в ОЗУ с PostgreSQL, а поиск быстро?

+1

подумайте об использовании очереди сообщений для этого. –

ответ

2

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

Использование чего-то типа memcached или сервера AMQP может дать вам лучшую производительность. Если вам нравится, вы даже можете использовать высокопроизводительный магазин с ключевыми значениями, например Tokyo Cabinet/Tokyo Tyrant.

0

Я предлагаю вам искать связь «COMET» вместо «AJAX like», если вы беспокоитесь о производительности сервера и использовании полосы пропускания.

Кстати, REDIS выглядит очень хорошо подходит для обработки таких структур данных в памяти.

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