Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
comet:faq:realtime-users-list [2016/10/11 17:24]
levhav
comet:faq:realtime-users-list [2019/12/18 02:05] (текущий)
Строка 1: Строка 1:
 +<​rst>​RU::​12-Примеры::​Как реализовать список посетителей обновляющийся на "​лету"?</​rst>​
 +<​rst>​Header:​ Как реализовать список посетителей обновляющийся на лету</​rst>​
 +
 ====== Как реализовать ​ список посетителей обновляющийся на "​лету"?​ ====== ====== Как реализовать ​ список посетителей обновляющийся на "​лету"?​ ======
  
 Есть несколько возможных вариантов реализации. Есть несколько возможных вариантов реализации.
    
-Можно получить из комет сервера список авторизованных пользователей подписанных на какой то из каналов.+Можно получить из комет сервера список авторизованных пользователей подписанных на какой-то из каналов.
    
   - Пользователь проходит [[comet:​authentication|авторизацию на комет сервере]]   - Пользователь проходит [[comet:​authentication|авторизацию на комет сервере]]
-  - [[comet:​javascript_api#​подписка_на_получение_сообщений_из_канала|Подписывается на канал]] (можно использовать любое название канала,​ например ​IamOnline ​или как угодно) +  - [[comet:​javascript_api#​подписка_на_получение_сообщений_из_канала|Подписывается на канал]] ​вида track_* ​(можно использовать любое название канала,​ например ​track_online ​или как угодно) 
-  - Вы запросом к api получаете [[comet:​cometql#​таблица_users_in_pipes|список авторизованных пользователей подписанных на канал]] (это уже список кто сейчас онлайн)+  - Вы запросом к CometQL ​api получаете [[comet:​cometql#​таблица_users_in_pipes|список авторизованных пользователей подписанных на канал]] (это уже список кто сейчас онлайн) 
 + 
 +  - Чтобы список пополнялся новыми пользователями в режиме реального времени,​ то надо в js добавить обработчики на события subscription и unsubscription приходящие из канала track_online (или того на какой вы подписались) 
 + 
 +===== Получение списка пользователей онлайн ===== 
 +Запросом к CometQL api получаете [[comet:​cometql#​таблица_users_in_pipes|список авторизованных пользователей подписанных на канал]] 
 +<​code>​ 
 +mysql> SELECT * FROM users_in_pipes WHERE name = "​track_online";​ 
 +</​code>​ 
 + 
 + 
 +===== Подписка на обновление списка пользователей онлайн =====  
 +<code JavaScript>​ 
 +CometServer().subscription("​track_online.subscription",​ function(msg) 
 +
 +    // Обработка события что кто то зашёл на сайт и подписался на канал track_online 
 +});  
 +CometServer().subscription("​track_online.unsubscription",​ function(msg) 
 +
 +    // Обработка события что кто то покинул сайт и/или отписался от канала track_online 
 +});  
 +</​code>​ 
 +  
 +Пример:​ 
 +<​html>​ 
 +<iframe height='​600'​ scrolling='​no'​ title='​CppComet auth chat example'​ src='//​codepen.io/​Levhav/​embed/​zLJarm/?​height=265&​theme-id=0&​default-tab=js,​result&​embed-version=2'​ frameborder='​no'​ allowtransparency='​true'​ allowfullscreen='​true'​ style='​width:​ 100%;'>​See the Pen <a href='​https://​codepen.io/​Levhav/​pen/​zLJarm/'>​CppComet auth chat example</​a>​ by Trapenok Victor (<a href='​https://​codepen.io/​Levhav'>​@Levhav</​a>​) on <a href='​https://​codepen.io'>​CodePen</​a>​. 
 +</​iframe>​ 
 +</​html>​ 
 + 
 +  
 +Пример отключения от комет сервера при потере фокуса окном. И подключении к комет серверу при получении фокуса. События подключения и отключения генерируют события в канале track_online у всех кто на этот канал подписан. 
 + 
 +<​html>​ 
 +<iframe height='​600'​ scrolling='​no'​ title='​QBZqYQ'​ src='//​codepen.io/​Levhav/​embed/​QBZqYQ/?​height=265&​theme-id=0&​default-tab=js,​result&​embed-version=2'​ frameborder='​no'​ allowtransparency='​true'​ allowfullscreen='​true'​ style='​width:​ 100%;'>​See the Pen <a href='​https://​codepen.io/​Levhav/​pen/​QBZqYQ/'>​QBZqYQ</​a>​ by Trapenok Victor (<a href='​https://​codepen.io/​Levhav'>​@Levhav</​a>​) on <a href='​https://​codepen.io'>​CodePen</​a>​. 
 +</​iframe>​ 
 +</​html>​
  
-  - Чтобы список пополнялся новыми пользователями в режиме реального времени то надо: 
-    - В момент входа на сайт отправлять сообщение в канал на который мы подписались что ещё кто то онлайн http://​comet-server.ru/​wiki/​doku.php/​comet:​faq:​send-message-to-pipe 
-    - Или можно отправлять сообщение в канал из Js когда страница загрузилась http://​comet-server.ru/​wiki/​doku.php/​comet:​javascript_api#​отправка_сообщений_в_канал_из_js