RU::12-Примеры::Как реализовать список посетителей обновляющийся на "лету"?
Header: Как реализовать список посетителей обновляющийся на лету
====== Как реализовать список посетителей обновляющийся на "лету"? ======
Есть несколько возможных вариантов реализации.
Можно получить из комет сервера список авторизованных пользователей подписанных на какой-то из каналов.
- Пользователь проходит [[comet:authentication|авторизацию на комет сервере]]
- [[comet:javascript_api#подписка_на_получение_сообщений_из_канала|Подписывается на канал]] вида track_* (можно использовать любое название канала, например track_online или как угодно)
- Вы запросом к CometQL api получаете [[comet:cometql#таблица_users_in_pipes|список авторизованных пользователей подписанных на канал]] (это уже список кто сейчас онлайн)
- Чтобы список пополнялся новыми пользователями в режиме реального времени, то надо в js добавить обработчики на события subscription и unsubscription приходящие из канала track_online (или того на какой вы подписались)
===== Получение списка пользователей онлайн =====
Запросом к CometQL api получаете [[comet:cometql#таблица_users_in_pipes|список авторизованных пользователей подписанных на канал]]
mysql> SELECT * FROM users_in_pipes WHERE name = "track_online";
===== Подписка на обновление списка пользователей онлайн =====
CometServer().subscription("track_online.subscription", function(msg)
{
// Обработка события что кто то зашёл на сайт и подписался на канал track_online
});
CometServer().subscription("track_online.unsubscription", function(msg)
{
// Обработка события что кто то покинул сайт и/или отписался от канала track_online
});
Пример:
Пример отключения от комет сервера при потере фокуса окном. И подключении к комет серверу при получении фокуса. События подключения и отключения генерируют события в канале track_online у всех кто на этот канал подписан.