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 у всех кто на этот канал подписан.