Отслеживайте пользователей онлайн в режиме реального времени, чтобы сыграть в викторину для двух игроков
Я готов создать игру-викторину для двух игроков в режиме реального времени. Для этого мне нужно отслеживать, когда пользователи находятся на странице моей викторины и когда они покидают ее. По сути, мне нужно какое-то лобби, где собираются игроки и откуда мой сценарий выбирает двух случайных игроков, которые должны встретиться друг с другом в игре.
Поскольку многие игроки переходят из онлайн в автономный режим за очень короткое время, я предпочитаю не использовать классический метод "обновить статус игрока до базы данных, а затем через определенный промежуток времени получать список онлайн-игроков". В настоящее время я занимаюсь идеей использования Comet Push и немного изучил PubNub.
Я полагаю, что настоящую игру-викторину решить довольно просто: используйте классическую Comet publish() для отправки ответов, и subscribe() для проверки статуса другого пользователя. Но меня беспокоит то, как я могу получить этот конкретный список с онлайн-пользователями?
Я пытался опубликовать () user_id, когда пользователь заходит в лобби, но как мне уведомить всех остальных пользователей, когда этот пользователь отключается? Как отобразить в лобби общее количество подключенных пользователей вместе с их именами?
Я впервые сталкиваюсь с Кометой, и ее логика мне не совсем понятна.
Спасибо за помощь!
1 ответ
Возможно, вы захотите попробовать Pusher и нашу (я работаю для Pusher) функциональность присутствия. Каналы присутствия позволяют легко реализовать функциональность в стиле комнаты / лобби и должны соответствовать вашим критериям.
- Вы получаете начальный список пользователей, подписавшихся на канал, когда вы подписались
- Вам сообщают всякий раз, когда пользователь подписывается (входит) и отписывается (покидает) канал (комната / лобби)
Таким образом, вам не нужно реализовывать эту функцию самостоятельно. Это часть решения, которое предлагает Pusher.