Как бы вы начали реализовывать чат в Django? - PullRequest
2 голосов
/ 28 апреля 2011

Если бы вы внедрили чат (то есть текстовый разговор в реальном времени) в Django, как бы вы это сделали?

Мои мысли об этом (пожалуйста, помилуйтеnoob) -
Создать таблицу для хранения архивных сообщений и одну для хранения текущих сообщений.
И заполнить текущий чат, запрашивая таблицу текущих сообщений каждые 20 секунд, используя javascript.Но это кажется таким неправильным.
Должен быть лучший путь.Я слышал что-то, что называется технологией push.Как мне использовать его с django?
PS Мой сайт размещен на хосте dreamhost.

Ответы [ 2 ]

3 голосов
/ 28 апреля 2011

Большинство приложений веб-чата, как правило, используют программирование кометы.Comet - это не настоящая технология, а скорее симуляция.Во-первых, существуют разные реализации кометы, но обычно пул и ajax используются для многократной проверки сервера на наличие сообщения.Обычно комета приводит к слишком большому количеству циклов, и поэтому были предприняты шаги, чтобы найти более подходящие альтернативы, такие как Bosh, которые просто оставляют соединение открытым.На самом деле это можно считать реальным толчком в отличие от кометы.В вики-ссылке ниже перечислены альтернативы, но в целом я думаю, что Comet и Bosh являются наиболее часто используемыми методами для чата.Вы могли бы даже использовать оба метода вместе.Вот несколько ссылок.

1 голос
/ 28 апреля 2011

Если вас в основном касается внешний интерфейс, посмотрите на комету.

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

Другие решения включают базы данных хранилища ключей, которые не встроены в Django. Вы можете отправить сообщения в набор Redis или сохранить данные активной комнаты чата в memcached.

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

...