Различия

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

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

comet:ws-api [2018/08/14 17:02]
levhav [Описание прямого взаимодействия с комет сервером по протоколу websockets]
comet:ws-api [2019/12/18 01:58]
Строка 1: Строка 1:
-====== Описание прямого взаимодействия с комет сервером по  протоколу websockets ====== 
- 
-Может быть полезно для использования комет сервера в среде где нет javascript интерпритатора 
- 
-Комет сервер отправляет данные в формате 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 символов. 
- 
-