Итак, я пытаюсь написать систему чата с использованием django (я относительно новичок в системе реального времени).
Я провел некоторое исследование - есть много вариантов (витые, торнадо и т. Д.), Но сейчас я решил попробовать использовать nginx в качестве веб-сервера и паба redis.
Чат будет между двумя пользователями одновременно.
Вот о чем я думал:
При аутентификации все пользователи выдают psubscribe chatctrl: * :. Это по существу подписывается на канал управления, чтобы установить начальный диалог, который всегда необходим
Когда пользователь u1 запускает чат с пользователем u2, мы
создайте канал, скажите «chat: u1: u2» и подпишитесь на него.
Пользователь u1 публикует сообщение на контрольном канале chatctrl: u1: u2: (управляющее сообщение, которое прослушивает u2) эффективно говорит: «Вы хотите поговорить со мной на канале» chat: u1 : u2"
- Пользователь u2 должен получить это сообщение, подписаться на канал и ответить «да» через другое сообщение на канале управления (или на вновь созданном канале.
- Сеанс установлен, и оба пользователя могут публиковать на одном и том же канале и прослушивать его.
Мой вопрос:
1. Имеет ли вышесказанное смысл, прежде всего? Если нет, то как бы вы сделали это с помощью Redis?
2. Второй вопрос: куда мне поставить цикл для прослушивания сообщений? Так как это будет «блокировка», когда нет сообщений, он не может перейти в представление или в модель, к которой обращается представление. Должен ли он быть в порожденной теме, и если да, то как мне отписаться после окончания сеанса чата?
Thanx!