Различия

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

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

Следующая версия
Предыдущая версия
comet:ws-api [2018/06/01 16:37]
levhav создано
comet:ws-api [2019/12/18 01:58] (текущий)
Строка 1: Строка 1:
-Описание прямого взаимодействия с комет сервером по вебсокет ​протоколу +====== ​Описание прямого взаимодействия с комет сервером по  протоколу ​websockets ======
  
 Может быть полезно для использования комет сервера в среде где нет javascript интерпритатора Может быть полезно для использования комет сервера в среде где нет javascript интерпритатора
  
 Комет сервер отправляет данные в формате json Комет сервер отправляет данные в формате json
-С версии ​4.будет принимать тоже большую часть запросов в json форматеа пока принимает в текстовом формате.+ 
 +====== Авторизация ====== 
 + 
 +Параметры подключения определены в url запроса на подключение. 
 +В них важен порядок следования параметров в адресе и регистрВсе параметры обязательны но могут иметь пустое значение.  
 + 
 +Пример запроса на подключение:​ 
 + 
 +<​code>​ 
 +wss://​app.comet-server.ru/​ws/​sesion=undefined&​myid=undefined&​devid=15&​v=3.31&​uuid=Db_YTZOMMQc902yluqo7mLns3RXWFz2t&​api=js 
 +</​code>​ 
 + 
 +Параметры: 
 + 
 +  * sesion - токен авторизации для ​пользователя из таблицы users_auth или jwt токен 
 +  * myid - идентификатор пользователя ​из таблицы users_auth 
 +  * devid - идентификатор `dev_id` для отделения данных одного аккаунта от другого.  
 +  * v - версия клиента (число с точкой) пока этот параметр игнорируется но возможно когда то он будет использоваться для ​обратной совместимости 
 +  * uuid - случайным обаразом сгенерированный uuid клиента в апи пока не проработан. 
 + 
 +После подключения комет сервер отправит в ответ статус авторизации. От других типов сообщений это сообщение отличается тем что содержит поле authorized 
 +<​code>​ 
 +
 +                {"​data":​ "​токен авторизации"​},​ 
 +                {"​pipe":​ "​sys"​},​ 
 +                {"​event":​ "​serverInfo"​},​ 
 +                {"​server":​ MYSQL_SERVERNAME},​ 
 +                {"​authorized":​ true} 
 +
 +</​code>​ 
 + 
 +====== Сообщения приходящие от комет сервера ====== 
 + 
 +При наступлении события комет сервер отправляет сообщение в формате json, до версии 4.0 некоторые сообщения в json могут быть закодированы в base64. 
 + 
 +Каждое сообщение отделено переносом строки. За раз может прийти несколько сообщений разделённых переносом строки. 
 + 
 +Сообщение имеет следующие поля: 
 + 
 +  * data - полезная нагрузка отправленая кем то. Строка или json 
 +  * pipe - имя канала (в версии до 4.0 называется pipe_name) 
 +  * event - имя события в канале (в версии до 4.0 называется event_name) 
 +  * error - код ошибки (не всегда есть) 
 + 
 + 
 +====== Подписка на события ====== 
 + 
 +Для подписки на события надо отправить текстовое сообщение следующего вида 
 +<​code>​ 
 +subscription 
 +pipe1 
 +pipe2 
 +pipe3 
 +</​code>​ 
 + 
 +Ключевое слово subscription потом \n а потом ​список каналов на которые подписываемся разделённые переносом строки \n 
 + 
 +Обратите внимание что подписка осуществляется на канал. Имена событий которые мы ожидаем отправлять не надо.  
 + 
 +Ответ на этот ​запрос ​не предусмотрен. 
 + 
 +Для того чтобы отписаться от некоторых каналов надо отправить заново список каналов на которые мы подписаны за исключением ​тех на которые мы не подписаны. 
 + 
 +Подписываться на канал msg не надо. Личные сообщения доходят всегда если мы авторизованны. 
 + 
 +====== Отправка сообщений в канал ====== 
 + 
 +Чтобы отправить сообщение в канал аналогично функции web_pipe_send из JavaScript апи надо отправить сообщение какого вида: 
 + 
 +<​code>​ 
 +web_pipe2\nPipe_name\nEvent_name\n*\nMessage 
 +</​code>​ 
 + 
 +  * web_pipe2 - ключевое слово 
 +  * Pipe_name - имя канала 
 +  * Event_name - имя события 
 +  * *  - всегда ​так отправляем так как этот параметр устарел и в дальнейшем не будет поддерживаться 
 +  * Message - само сообщение (можно закодировать его в json) 
 + 
 +====== Получение последних сообщений из канала ======  
 + 
 +Чтобы получить несколько последних сообщений из канала аналогично ​функции get_pipe_log из JavaScript апи надо отправить сообщение какого вида: 
 + 
 +<​code>​ 
 +pipe_log\nPipe_name\nMarker\n 
 +</​code>​ 
 + 
 +  * pipe_log - ключевое слово 
 +  * Pipe_name - имя канала 
 +  * Marker - случайное число из 10 символов. Ответ на этот запрос тоже будет содержать поле marker с этим числом для того чтоб вы могли понять на какой из запросов пишёл ответ.  
 + 
 +<note tip>​Поле marker везде себя ведёт так же как и тут. Оно используется чтоб при получении ответа вы знали на что именно пришёл ответ</​note>​ 
 + 
 +====== Получение количества подписчиков в канале ======  
 + 
 +Аналог функции count_users_in_pipe из JavaScript апи  
 + 
 +<​code>​ 
 +pipe_count\nPipe_name\nMarker\n 
 +</​code>​ 
 + 
 +  * pipe_count - ключевое слово 
 +  * Pipe_name - имя канала 
 +  * Marker - случайное число из 10 символов.