Как определять просматриваемые посты пользователем на данный момент и отправлять их по WebSocket?
0
голос «против»
избранное
Есть сайт со списком постов -- обычные divы. Допустим, в базе сайта 1000 постов, на странице показывается 10, можно подгрузить еще 10, потом еще.. и так до последнего поста.
Хочу сделать систему лайков, и чтобы при лайке отправлялось событие всем пользователям, просматриваемым этот пост на данный момент.
(но я же не могу отправлять инфу обо всех постах (1000) на всех посетителей онлайн (200-500). за 1 лайк 200-500 пакетов отправится. Если каждый пользователь лайкнет минимум 5 раз? 200 * 1000 * 5 = 1000000 пакетов за несколько секунд? для двухсот посетителей? Не дело(
Событие о лайке напрямую взаимодействует с сокет-сервером, и получается так, что когда пользователь лайкает какой-то пост, сокет сервер готов уже отправлять событие, но я не понимаю как определить, кому надо отправлять это событие -- как определить просматриваемых пользователей того поста, который только что лайкнули, чтобы обновить у них счетчик???
При открытии страницы вы создаёте ws соединение, а после этого собираете идентификаторы постов и отправляете по ws несколько сообщений: subscribe: post_id
А на сервере собираете таким образом список соединений, которые подписаны на один пост. Вот вам и список рассылки.
Да, но если таких идентификаторов будет много? Допустим, пользователь будет наблюдать за одной тысячей постов, и каждый лайк на один из этих постов будет вызывать одно уведомление