Различия

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

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

comet:faq:realtime-users-list [2018/08/08 04:20]
levhav [Подписка на обновление списка пользователей онлайн]
comet:faq:realtime-users-list [2019/12/18 02:05]
Строка 1: Строка 1:
-<​rst>​RU::​12-Примеры::​Как реализовать список посетителей обновляющийся на "​лету"?</​rst>​ 
-<​rst>​Header:​ Как реализовать список посетителей обновляющийся на лету</​rst>​ 
- 
-====== Как реализовать ​ список посетителей обновляющийся на "​лету"?​ ====== 
- 
-Есть несколько возможных вариантов реализации. 
-  
-Можно получить из комет сервера список авторизованных пользователей подписанных на какой-то из каналов. 
-  
-  - Пользователь проходит [[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|список авторизованных пользователей подписанных на канал]] 
-<​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>​