Как создать список друзей, где статус пользователя отображается онлайн / оффлайн? - PullRequest
0 голосов
/ 27 октября 2018

У меня есть 2 идеи.

Идея № 1:

С помощью Redis выведите людей, которые в данный момент онлайн, в сет. Затем со стороны клиента пользователь будет периодически отправлять запрос на отправку ему статуса для всех своих друзей. Сервер будет делать sql-запрос, чтобы найти всех друзей и найти их в наборе redis, и если это так, то они в сети.

Идея № 2:

Используя Redis PubSub, когда вы, как пользователь, находитесь в сети, вы подписываетесь на все n каналов друзей. И всякий раз, когда пользователь выходит в онлайн, он публикует на канале, что он или она онлайн. А тот, кто, возможно, слушает, получит уведомление.

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

1 Ответ

0 голосов
/ 29 октября 2018

Я думаю, идея # 1 должна быть решением. идея # 2 НЕ МОЖЕТ работать.

Redis не хранит опубликованные сообщения. Поэтому, если клиент НЕ подключается к Redis, сообщение будет потеряно. При повторном подключении к Redis он не будет получать сообщений, опубликованных ранее.

В вашем случае idea # 2 , когда пользователь входит в систему, он понятия не имеет, находятся ли его друзья в сети. Потому что его онлайн-друзья опубликовали онлайн-сообщения, прежде чем он войдет в систему, и он не получит эти сообщения.

...