@ikerya

Как определять просматриваемые посты пользователем на данный момент и отправлять их по WebSocket?

0
голос «против»
избранное
Есть сайт со списком постов -- обычные divы. Допустим, в базе сайта 1000 постов, на странице показывается 10, можно подгрузить еще 10, потом еще.. и так до последнего поста.

Хочу сделать систему лайков, и чтобы при лайке отправлялось событие всем пользователям, просматриваемым этот пост на данный момент.

(но я же не могу отправлять инфу обо всех постах (1000) на всех посетителей онлайн (200-500). за 1 лайк 200-500 пакетов отправится. Если каждый пользователь лайкнет минимум 5 раз? 200 * 1000 * 5 = 1000000 пакетов за несколько секунд? для двухсот посетителей? Не дело(

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

В общем, нужны мысли.
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
При открытии страницы вы создаёте ws соединение, а после этого собираете идентификаторы постов и отправляете по ws несколько сообщений: subscribe: post_id

А на сервере собираете таким образом список соединений, которые подписаны на один пост. Вот вам и список рассылки.

При дисконнекте убираете все подписки соединения
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы