Содержание

Описание прямого взаимодействия с комет сервером по протоколу websockets

Может быть полезно для использования комет сервера в среде где нет javascript интерпритатора

Комет сервер отправляет данные в формате json

Авторизация

Параметры подключения определены в url запроса на подключение. В них важен порядок следования параметров в адресе и регистр. Все параметры обязательны но могут иметь пустое значение.

Пример запроса на подключение:

wss://app.comet-server.ru/ws/sesion=undefined&myid=undefined&devid=15&v=3.31&uuid=Db_YTZOMMQc902yluqo7mLns3RXWFz2t&api=js

Параметры:

После подключения комет сервер отправит в ответ статус авторизации. От других типов сообщений это сообщение отличается тем что содержит поле authorized

{
                {"data": "токен авторизации"},
                {"pipe": "sys"},
                {"event": "serverInfo"},
                {"server": MYSQL_SERVERNAME},
                {"authorized": true}
}

Сообщения приходящие от комет сервера

При наступлении события комет сервер отправляет сообщение в формате json, до версии 4.0 некоторые сообщения в json могут быть закодированы в base64.

Каждое сообщение отделено переносом строки. За раз может прийти несколько сообщений разделённых переносом строки.

Сообщение имеет следующие поля:

Подписка на события

Для подписки на события надо отправить текстовое сообщение следующего вида

subscription
pipe1
pipe2
pipe3

Ключевое слово subscription потом \n а потом список каналов на которые подписываемся разделённые переносом строки \n

Обратите внимание что подписка осуществляется на канал. Имена событий которые мы ожидаем отправлять не надо.

Ответ на этот запрос не предусмотрен.

Для того чтобы отписаться от некоторых каналов надо отправить заново список каналов на которые мы подписаны за исключением тех на которые мы не подписаны.

Подписываться на канал msg не надо. Личные сообщения доходят всегда если мы авторизованны.

Отправка сообщений в канал

Чтобы отправить сообщение в канал аналогично функции web_pipe_send из JavaScript апи надо отправить сообщение какого вида:

web_pipe2\nPipe_name\nEvent_name\n*\nMessage

Получение последних сообщений из канала

Чтобы получить несколько последних сообщений из канала аналогично функции get_pipe_log из JavaScript апи надо отправить сообщение какого вида:

pipe_log\nPipe_name\nMarker\n
Поле marker везде себя ведёт так же как и тут. Оно используется чтоб при получении ответа вы знали на что именно пришёл ответ

Получение количества подписчиков в канале

Аналог функции count_users_in_pipe из JavaScript апи

pipe_count\nPipe_name\nMarker\n