Различия
Здесь показаны различия между двумя версиями данной страницы.
| Следующая версия | Предыдущая версия | ||
|
comet:faq:realtime-users-list [2016/10/11 17:23] 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 | ||