Различия

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

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

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>​ 
-<script async src="​https://​production-assets.codepen.io/​assets/​embed/​ei.js"></​script>​ 
-</​html>​