Различия
Здесь показаны различия между двумя версиями данной страницы.
comet:authentication [2017/09/16 12:28] levhav [Онлайн демо отправки личных сообщений] |
comet:authentication [2019/12/18 01:58] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | <rst>RU::002-API::004-Авторизация пользователей на комет сервере</rst> | ||
- | <rst>Header: Авторизация пользователей на комет сервере</rst> | ||
- | |||
- | ====== Авторизация пользователей ====== | ||
- | |||
- | Помимо каналов где каждый кто знает имя канала может подписаться на него, есть возможность авторизации пользователей на комет сервере и отправки личных сообщений пользователям по их идентификаторам. Авторизация пользователя происходит в 2 этапа. Первый этап это отправка идентификатора пользователя в вашей системе и случайного хеша в комет сервер. | ||
- | |||
- | <code sql> | ||
- | mysql> INSERT INTO users_auth (id, hash )VALUES (1, 'auth_hash1'); | ||
- | </code> | ||
- | * Здесь строка auth_hash1 - это текстовый ключ авторизации. Вы его сами генерируете на своём сервере и отправляете сначала в комет по средствам insert запроса в таблицу users_auth, а затем передаёте в JavaScript для авторизации конкретного пользователя на комет сервере. | ||
- | * Числовой_Идентификатор_пользователя - Это id пользователя на вашем сайте, любое целое положительное число не более чем из 9 цифр. | ||
- | |||
- | <code JavaScript> | ||
- | // На втором этапе эти сведения (идентификатор пользователя и хеш) надо передать в JavaScript Api | ||
- | $(document).ready(function() | ||
- | { | ||
- | CometServer().start({dev_id:15, user_key:"auth_hash1", user_id:"Числовой_Идентификатор_пользователя" }) | ||
- | }); | ||
- | </code> | ||
- | И теперь пользователь будет авторизован на комет сервере. | ||
- | |||
- | ====== Отправка сообщений для авторизованных пользователей ====== | ||
- | |||
- | При отправке сообщений авторизованным пользователям по их идентификатору ([[comet:cometql#таблица_users_messages|insert запрос в таблицу users_messages]]) сообщения доставляются пользователю на все устройства (До 16 устройств) на которых он прошёл авторизацию в данный момент. Это очень удобно в том случаи если человек зашёл на ваш сайт и авторизовался на нём более чем с одного устройства (к примеру телефон и компьютер или просто в двух разных браузерах сидит одновременно). | ||
- | |||
- | Если человек в данный момент ofline то сообщение помещается в очередь сообщений и будет доставлено когда человек появится online. | ||
- | |||
- | Основное назначение очереди сообщений это доставка сообщений после кратковременного перехода человека в ofline. Например в тех случаях когда человек обновляет страницу сайта на которой было открыто соединение он уходит в ofline примерно на 1 секунду. | ||
- | |||
- | |||
- | |||
- | ====== Подписка на получение личных сообщений ====== | ||
- | Для того чтобы получать личные сообщения. Надо подписаться на них. Подписка на сообщения с именем события "event1" от сервера доставленные в соответствии с данными авторизации (то есть по id пользователя) осуществляется следующим образом. | ||
- | <code JavaScript>CometServer().subscription("msg.event1", function(e){ console.log(e)})</code> | ||
- | |||
- | Канал msg относиться к [[comet:javascript_api:pipe-types|списку каналов с особыми свойствами]] | ||
- | |||
- | ====== Определение статуса авторизации ====== | ||
- | |||
- | Что бы определится авторизовались мы на комет сервере или нет есть несколько специальных функций | ||
- | |||
- | Функция isAuthorized вернёт текущее значение состояния авторизации. Бывает три значения в ответе. | ||
- | |||
- | * undefined - статус ещё не определён, на пример не было подключения или оно в процессе. | ||
- | * true - авторизованы | ||
- | * false - не авторизованны | ||
- | |||
- | <code JavaScript> | ||
- | cometApi.isAuthorized() | ||
- | </code> | ||
- | |||
- | Функция onAuthSuccess служит для подписки на оповещения о том моменте кода статус поменялся с любого на "авторизован" | ||
- | <code JavaScript> | ||
- | cometApi.onAuthSuccess(function() | ||
- | { | ||
- | alert("Авторизовались успешно") | ||
- | }) | ||
- | </code> | ||
- | |||
- | Функция onAuthFalill служит для подписки на оповещения о том моменте кода статус поменялся с любого на "не авторизован" | ||
- | <code JavaScript> | ||
- | cometApi.onAuthFalill(function() | ||
- | { | ||
- | alert("Не авторизовались") | ||
- | }) | ||
- | </code> | ||
- | |||
- | ====== Онлайн демо отправки личных сообщений ====== | ||
- | |||
- | [[https://github.com/CppComet/auth-example|Код примера]] [[https://cppcomet.github.io/auth-example/index.html|online demo on github]] [[https://codepen.io/Levhav/pen/XaWLra|Смотреть на codepen.io]] | ||
- | |||
- | Откройте пример в двух или более браузерах, Скопируйте ваш `USER_ID` из одного окна и вставьте его в другое окно. В поле с подписью ` Identificator of user who must will receive the message` введите текст сообщения и нажмите отправить. Вы увидите что сообщение придёт только в то окно у которого задан то же USER_ID который вы и указали при отправке. | ||
- | |||
- | <html> | ||
- | <p data-height="900" data-theme-id="0" data-slug-hash="XaWLra" data-default-tab="js,result" data-user="Levhav" data-embed-version="2" data-pen-title="CppComet auth chat example" class="codepen">See the Pen <a href="https://codepen.io/Levhav/pen/XaWLra/">CppComet auth chat example</a> by Trapenok Victor (<a href="https://codepen.io/Levhav">@Levhav</a>) on <a href="https://codepen.io">CodePen</a>.</p> | ||
- | <script async src="https://production-assets.codepen.io/assets/embed/ei.js"></script> | ||
- | </html> | ||