Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
comet:ws-api [2018/06/01 16:42] levhav |
comet:ws-api [2018/06/03 06:11] levhav |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | Описание прямого взаимодействия с комет сервером по вебсокет протоколу | + | ====== Описание прямого взаимодействия с комет сервером по протоколу websockets ====== |
Может быть полезно для использования комет сервера в среде где нет javascript интерпритатора | Может быть полезно для использования комет сервера в среде где нет javascript интерпритатора | ||
Строка 8: | Строка 7: | ||
- | === Авторизация === | + | ====== Авторизация ====== |
Параметры подключения определены в url запроса на подключение. | Параметры подключения определены в url запроса на подключение. | ||
- | В них важен порядок следования параметров в адресе. | + | В них важен порядок следования параметров в адресе и регистр. Все параметры обязательны но могут иметь пустое значение. |
Пример запроса на подключение: | Пример запроса на подключение: | ||
+ | <code> | ||
wss://app.comet-server.ru/ws/sesion=undefined&myid=undefined&devid=15&v=3.31&uuid=Db_YTZOMMQc902yluqo7mLns3RXWFz2t&api=js | 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) | ||