Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
comet:cometql [2016/11/15 04:22] levhav [Дополнительная информация] |
comet:cometql [2019/12/18 01:58] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | <rst>RU::002-API::002-CometQL</rst> | ||
+ | <rst>Header: CometQL API</rst> | ||
+ | |||
====== CometQL ====== | ====== CometQL ====== | ||
Строка 7: | Строка 10: | ||
- Единый api для более чем 12 языков программирования | - Единый api для более чем 12 языков программирования | ||
- Простой и понятный вид запросов | - Простой и понятный вид запросов | ||
- | - В php есть средства поддержания постоянных соединений с MySQL и теперь их можно так же использовать для работы с comet сервером. | + | - В php есть средства поддержания постоянных соединений с MySQL и теперь их можно также использовать для работы с comet сервером. |
- | В данном представлении данные лежат в таблицах а команды на выборку или вставку совершают какие то действия. | + | В данном представлении данные лежат в таблицах а команды на выборку или вставку совершают какие-то действия. |
- | Например для получения информации о том когда пользователь был online достаточно выполнить следующий запрос: | + | Например, для получения информации о том, когда пользователь был online достаточно выполнить следующий запрос: |
<code sql>select * from users_time where id = 2;</code> | <code sql>select * from users_time where id = 2;</code> | ||
Вот что мы увидим | Вот что мы увидим | ||
Строка 42: | Строка 45: | ||
<note important>Есть случаи когда нет возможности использовать протокол MySQL для соединения с комет сервером. Для таких случаев можно отправлять команды комет серверу по HTTP/HTTPS. Смотрите статью [[comet:cometql:HTTP|отправка CometQL запросов по HTTP]]</note> | <note important>Есть случаи когда нет возможности использовать протокол MySQL для соединения с комет сервером. Для таких случаев можно отправлять команды комет серверу по HTTP/HTTPS. Смотрите статью [[comet:cometql:HTTP|отправка CometQL запросов по HTTP]]</note> | ||
- | ====== Важные замечания для старых пользователей ====== | ||
- | * Для корректной работы с CometQL необходимо использовать [[comet:javascript_api|JavaScript Api]] версии 2.0 или выше. | + | Пример подключения к комет серверу из php. |
- | * Одновременное использование CometQL и Comet Server PHP API с одним и тем же [[comet:dev_id|публичным идентификатором разработчика]] не рекомендуется так как часть функций будет работать не правильно. | + | <code php> |
+ | $dev_id = "15"; // Используется как логин | ||
+ | $dev_key = "lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB8"; // Используется как пароль | ||
+ | // Подключение выглядит как будто мы подключились к бд. Можно использовать функции для работы с mysql | ||
+ | // Но на самом деле вы подключаетесь к комет серверу. | ||
+ | $link = mysqli_connect("app.comet-server.ru", $dev_id, $dev_key, "CometQL_v1"); | ||
+ | if(!$link) | ||
+ | { | ||
+ | die("Не удалось создать соединение c CometQL"); | ||
+ | } | ||
+ | |||
+ | $result = mysqli_query ( $link, "show status" ); | ||
+ | if(mysqli_errno($link) != 0) | ||
+ | { | ||
+ | echo "Error code:<a href='https://comet-server.com/wiki/doku.php/comet:cometql:error' target='_blank' >".mysqli_errno($link)."</a>"; | ||
+ | echo "Error text:<a href='https://comet-server.com/wiki/doku.php/comet:cometql:error' target='_blank' >".mysqli_error($link)."</a>"; | ||
+ | exit; | ||
+ | } | ||
+ | |||
+ | while($row = mysqli_fetch_assoc($result)) | ||
+ | { | ||
+ | echo "<pre>"; | ||
+ | var_dump($row); | ||
+ | echo "</pre><br>"; | ||
+ | } | ||
+ | |||
+ | </code> | ||
====== Описание таблиц ====== | ====== Описание таблиц ====== | ||
Строка 52: | Строка 80: | ||
Замечания по реализации текущей версии CometQL: | Замечания по реализации текущей версии CometQL: | ||
- | * В CometQL реализовано не всё что доступно в sql. Часть функционала планируется реализовать позже. Но некоторые ограничения наложены специально в целях оптимизации внутренней структуры Comet сервера. | + | * В CometQL реализовано не всё, что доступно в sql. Часть функционала планируется реализовать позже. Но некоторые ограничения наложены специально в целях оптимизации внутренней структуры Comet сервера. |
* В целях [[comet:cometql:optimization_for_the_cluster|оптимизации внутренней логики]] операции delete и insert не возвращают количество затронутых строк, по крайней мере так будет в CometQL версии 1.0 | * В целях [[comet:cometql:optimization_for_the_cluster|оптимизации внутренней логики]] операции delete и insert не возвращают количество затронутых строк, по крайней мере так будет в CometQL версии 1.0 | ||
* Поддержка в запросах операторов OR, AND и ORDER BY будет реализована позже. | * Поддержка в запросах операторов OR, AND и ORDER BY будет реализована позже. | ||
- | <note warning>У некоторых хостинг провайдеров установлен запрет на внешние соединения, это достаточно часто встречается на бесплатных или очень очень дешёвых хостингах. Для того что бы проверить возможность использования CometQL воспользуйтесь [[comet:testhosting|скриптом проверки хостинга]]. </note> | + | <note warning>У некоторых хостинг провайдеров установлен запрет на внешние соединения, это достаточно часто встречается на бесплатных или очень очень дешёвых хостингах. Для того, чтобы проверить возможность использования CometQL воспользуйтесь [[comet:testhosting|скриптом проверки хостинга]]. </note> |
===== Таблица pipes_messages ===== | ===== Таблица pipes_messages ===== | ||
Строка 65: | Строка 93: | ||
</code> | </code> | ||
- | Поля "name" и "event" должны соответствовать следующему <abbr>Цифры от 0 до 9 буквы английского алфавита и знаки = + / _(регулярному выражению [0-9A-z=+/_])</abbr> | + | Поля "name" и "event" должны соответствовать следующему <abbr>Цифры от 0 до 9 буквы английского алфавита и знаки = + / _ и длиной от 3 до 64 символов(регулярному выражению ^[0-9A-z=+/_]{3,64}$)</abbr> |
- | <note tip>Узнать количество людей в канале можно сделав запрос к таблице "pipes" так как сообщение отправляется всем кто подписался на канал то таким образом можно узнать число людей которые получили это сообщение.</note> | + | <note tip>Узнать количество людей в канале можно сделав запрос к таблице "pipes" так как сообщение отправляется всем, кто подписался на канал, то таким образом можно узнать число людей, которые получили это сообщение.</note> |
- | Запрос выборки из pipes_messages вернёт историю сообщений в канале если функция сохранения истории включена для этого канала. | + | Запрос выборки из pipes_messages вернёт историю сообщений в канале, если функция сохранения истории включена для этого канала. |
<code sql> | <code sql> | ||
mysql> select * from pipes_messages where name = "p10"; | mysql> select * from pipes_messages where name = "p10"; | ||
Строка 91: | Строка 119: | ||
Введите имя канала "pipe_name" и нажмите подписаться. | Введите имя канала "pipe_name" и нажмите подписаться. | ||
<html> | <html> | ||
- | <iframe src="//comet-server.ru/doc/example/7/subscriptionTest.php" width="910px"></iframe> | + | <iframe src="//comet-server.com/doc/example/7/subscriptionTest.php" width="910px"></iframe> |
</html> | </html> | ||
А теперь с помощью online командной строки расположенной в углу экрана выполните запрос вставки в pipes_messages и увидите что сообщение дошло. | А теперь с помощью online командной строки расположенной в углу экрана выполните запрос вставки в pipes_messages и увидите что сообщение дошло. | ||
Строка 118: | Строка 146: | ||
Теперь введите имя канала "web_admins" и нажмите подписаться. | Теперь введите имя канала "web_admins" и нажмите подписаться. | ||
<html> | <html> | ||
- | <iframe src="//comet-server.ru/doc/example/7/subscriptionTest.php" width="910px"></iframe> | + | <iframe src="//comet-server.com/doc/example/7/subscriptionTest.php" width="910px"></iframe> |
</html> | </html> | ||
А теперь выполните запрос ещё раз и увидите что подписчиков в канале стало больше. | А теперь выполните запрос ещё раз и увидите что подписчиков в канале стало больше. | ||
===== Таблица users_in_pipes ===== | ===== Таблица users_in_pipes ===== | ||
- | Таблица users_in_pipes содержит данные о том кто из [[comet:authentication|авторизованных пользователей]] подписался на канал. Таблица доступна только для чтения. | + | Таблица users_in_pipes содержит данные о том кто из пользователей подписался на канал. Таблица доступна только для чтения. |
<code sql> | <code sql> | ||
mysql> select * from users_in_pipes where name = "web_admins"; | mysql> select * from users_in_pipes where name = "web_admins"; | ||
- | +------------+---------+ | + | +------------+---------+-----------+-----------------+-------------------------------------+ |
- | | name | user_id | | + | | name | user_id | ip | origin | language | |
- | +------------+---------+ | + | +------------+---------+-----------+-----------------+-------------------------------------+ |
- | | web_admins | 2 | | + | | web_admins | 0 | 127.0.0.1 | https://site.ru | ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 | |
- | | web_admins | 4 | | + | | web_admins | 364 | 127.0.0.1 | https://site.ru | ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 | |
- | | web_admins | 14 | | + | +------------+---------+-----------+-----------------+-------------------------------------+ |
- | | web_admins | 9 | | + | |
- | +------------+---------+ | + | |
4 row in set (0.32 sec) | 4 row in set (0.32 sec) | ||
- | </code> | + | </code> |
- | + | Таблица имеет следующие поля: name, user_id, user_uuid, ip, origin, user_agent, language. | |
- | <note important>Поле users в таблице pipes содержит суммарное количество подписчиков как [[comet:authentication|авторизованных]] так и не авторизованных в то время как таблица users_in_pipes содержит список только авторизованных подписчиков.</note> | + | |
===== Таблица pipes_settings ===== | ===== Таблица pipes_settings ===== | ||
Таблица pipes_settings содержит настройки логирования каналов. По умолчанию сообщения проходящие через канал не запоминаются. Но если включить механизм логирования для канала то в комет сервере будет хранится n последних сообщений прошедших через этот канал. | Таблица pipes_settings содержит настройки логирования каналов. По умолчанию сообщения проходящие через канал не запоминаются. Но если включить механизм логирования для канала то в комет сервере будет хранится n последних сообщений прошедших через этот канал. | ||
Строка 249: | Строка 273: | ||
* [[comet:javascript_api|JavaScript API]] | * [[comet:javascript_api|JavaScript API]] | ||
* [[comet:testhosting|Почему скрипт работает на локальной машине и не работает на хостинге? ]] | * [[comet:testhosting|Почему скрипт работает на локальной машине и не работает на хостинге? ]] | ||
- | * [[comet:faq:public_key|Что такое и зачем нужен "Публичный идентификатор разработчика" и "Секретный ключ разработчика"?]] | + | * [[comet:dev_id|Что такое и зачем нужен "Публичный идентификатор разработчика" и "Секретный ключ разработчика"?]] |
* [[comet:faq:send-message-to-pipe|Как отправить сообщение в произвольный канал и как его потом получить на другой странице?]] | * [[comet:faq:send-message-to-pipe|Как отправить сообщение в произвольный канал и как его потом получить на другой странице?]] | ||
* [[comet:faq:realtime-users-list|Как реализовать механизм отслеживания вхождения пользователей на сайт. То есть список посетителей обновляющийся на "лету"?]] | * [[comet:faq:realtime-users-list|Как реализовать механизм отслеживания вхождения пользователей на сайт. То есть список посетителей обновляющийся на "лету"?]] | ||
+ | * [[comet:saas|Могут ли влиять одни пользователи сервиса на других пользователей?]] * | ||
+ | * [[comet:faq:access-to-channels-for-outsiders|Может ли кто то посторонний получать сообщение из каналов]] | ||
====== Зарезервированные имена каналов ====== | ====== Зарезервированные имена каналов ====== | ||
Строка 264: | Строка 290: | ||
* web_* - Каналы в которые можно отправлять сообщения как из CometQL так и из JS api | * web_* - Каналы в которые можно отправлять сообщения как из CometQL так и из JS api | ||
* track_* - для автоматического уведомления JS api о том что кто то подписался или отписался от этого канала | * track_* - для автоматического уведомления JS api о том что кто то подписался или отписался от этого канала | ||
+ | |||
+ | ====== Обёртки над CometQL api ====== | ||
+ | |||
+ | Если вы написали обёртку для работы с CometQL api для какого нибудь фреймворка то будет здорово если вы поделитесь своей наработкой с другими пользователями. Присылайте ссылки на репозиторий с вашей обёрткой на support@comet-server.com | ||
+ | |||
+ | ====== Примечание ====== | ||
+ | |||
+ | Для пользователей опенсорс версии полезно понимать что запросы попадающие в CometQL не передаются в бд комет сервера в MySQL они парсятся собственным парсером комет сервера. И таблицы из CometQL не являются прямым отражением таблиц из CometQL. |