Приложение для многокомнатного чата с веб-сокетами и Redis - PullRequest
0 голосов
/ 23 марта 2020

Я хочу создать приложение чата с несколькими комнатами. У меня есть Postgres база данных с таблицами: пользователи, чаты, chat_users, друзья, friend_requests, chat_invites, сообщения. Чтобы уведомлять пользователей в режиме реального времени, я использую веб-сокеты, которые хранятся на карте, и у каждого есть свой идентификатор (это всегда идентификатор пользователя). Чтобы уведомить группу клиентов, я храню идентификаторы соединений в наборах redis, и каждый раз, когда мне нужно отправить event в комнату, я получаю членов через smembers в [] int64 и посылаю каждому из них итерацию по массиву. Это хороший подход?

1 Ответ

0 голосов
/ 23 марта 2020

Если честно, ваш подход выглядит несколько чрезмерно сложным.

Я бы начал с создания простейшей из возможных вещей, которая работает - без использования Postgres или Redis. Сервер может хранить свои данные на некоторых картах / структурах, защищенных блокировкой для параллелизма. Клиентам все равно это не нужно.

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

Это будет поможет разделить проблему на более мелкие и более управляемые куски.

...