Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
comet:javascript_api [2018/02/24 11:43] anastation468 [Подписка на изменение статуса пользователя ( каналы user_status_* )] |
comet:javascript_api [2019/12/18 01:58] (текущий) |
||
---|---|---|---|
Строка 91: | Строка 91: | ||
====== Список пользователей онлайн ( каналы track_* )====== | ====== Список пользователей онлайн ( каналы track_* )====== | ||
- | Каналы с именем вида track_* автоматически генерируют события subscription и unsubscription внутри себя каждый раз как кто то подписывается или отписывается от этого канала | + | Каналы с именем вида track_* автоматически генерируют события subscription и unsubscription внутри себя каждый раз как кто-то подписывается или отписывается от этого канала |
<code JavaScript> | <code JavaScript> | ||
Строка 100: | Строка 100: | ||
cometApi.subscription("track_online.unsubscription", function(msg) | cometApi.subscription("track_online.unsubscription", function(msg) | ||
{ | { | ||
- | // Обработка события что кто то покинул сайт и/или отписался от канала track_online | + | // Обработка события что кто-то покинул сайт и/или отписался от канала track_online |
}); | }); | ||
</code> | </code> | ||
Строка 117: | Строка 117: | ||
<code JavaScript>cometApi.web_pipe_send("web_pipe_name", "event_name", "message")</code> | <code JavaScript>cometApi.web_pipe_send("web_pipe_name", "event_name", "message")</code> | ||
- | Для того чтобы получить отчёт о доставке сообщения в канал "Имя_канала" используйте subscription | + | Для того, чтобы получить отчёт о доставке сообщения в канал "Имя_канала" используйте subscription |
<code JavaScript>cometApi.subscription("#Имя_канала", function(e){ console.log(e)})</code> | <code JavaScript>cometApi.subscription("#Имя_канала", function(e){ console.log(e)})</code> | ||
- | Так как комет сервер поддерживает авторизацию пользователей, он сам добавляет id пользователя к сообщению таким образом что пользователь отправивший сообщение не может отправить чужой id. Для отключения этой возможности надо добавить символ "@" перед именем канала в который отправляется сообщение. В таком случаи доставленное сообщение будет выглядеть так как будто его отправил не авторизованный пользователь. | + | Так как комет сервер поддерживает авторизацию пользователей, он сам добавляет id пользователя к сообщению таким образом что пользователь отправивший сообщение не может отправить чужой id. Для отключения этой возможности надо добавить символ "@" перед именем канала, в который отправляется сообщение. В таком случае, доставленное сообщение будет выглядеть так, как будто его отправил не авторизованный пользователь. |
<code JavaScript>cometApi.web_pipe_send("@web_pipe_name", "event_name", "message")</code> | <code JavaScript>cometApi.web_pipe_send("@web_pipe_name", "event_name", "message")</code> | ||
Строка 146: | Строка 146: | ||
<note tip>Логирование проходящих сообщений можно включить запросом CometQL к [[comet:cometql#таблица_pipes_settings|таблице pipes_settings]].</note> | <note tip>Логирование проходящих сообщений можно включить запросом CometQL к [[comet:cometql#таблица_pipes_settings|таблице pipes_settings]].</note> | ||
- | Если функция логирования включена то вызов метода get_pipe_log инициирует отправку всех сообщений из истории в канале на клиент. | + | Если функция логирования включена, то вызов метода get_pipe_log инициирует отправку всех сообщений из истории в канале на клиент. |
<code JavaScript>cometApi.get_pipe_log("web_pipe_name")</code> | <code JavaScript>cometApi.get_pipe_log("web_pipe_name")</code> | ||
Сообщения пришедшие из истории канала будут иметь свойство history=true | Сообщения пришедшие из истории канала будут иметь свойство history=true | ||
Строка 154: | Строка 154: | ||
Функция count_users_in_pipe даёт возможность узнать количество подписчиков в канале. | Функция count_users_in_pipe даёт возможность узнать количество подписчиков в канале. | ||
- | У функции count_users_in_pipe первый аргумент это имя канала а вторым аргументом передаётся callback функция в которую будет передан ответ. | + | У функции count_users_in_pipe первый аргумент это имя канала, а вторым аргументом передаётся callback функция, в которую будет передан ответ. |
<code Javascript> | <code Javascript> | ||
cometApi.count_users_in_pipe("web_chat_pipe", function(res) | cometApi.count_users_in_pipe("web_chat_pipe", function(res) | ||
Строка 162: | Строка 162: | ||
</code> | </code> | ||
- | Но в отличии от [[comet:cometql|CometQL]] запроса эта функция может показывать количество подписчиков только в тех каналах у которых имя начинается с web_ к примеру для канала web_chat_pipe она сработает а для канала chat_pipe не сработает. Это ограничение введено для того что бы была возможность создать такой канал в котором количество подписчиков не сможет узнать кто попало через js api | + | Но в отличии от [[comet:cometql|CometQL]] запроса эта функция может показывать количество подписчиков только в тех каналах, у которых имя начинается с web_ к примеру для канала web_chat_pipe она сработает, а для канала chat_pipe не сработает. Это ограничение введено для того, чтобы была возможность создать такой канал, в котором количество подписчиков не сможет узнать кто-попало через js api |
======= Определение статуса авторизации на комет сервере ======= | ======= Определение статуса авторизации на комет сервере ======= | ||
Строка 193: | Строка 193: | ||
======= Определение мастер вкладки ======= | ======= Определение мастер вкладки ======= | ||
- | В JavaScript API есть функция которая из нескольких открытых вкладок назначает одну вкладку "главной" она называется мастер вкладкой, а все остальные вкладки определяются как salve вкладки. Функция isMaster возвращает true если выполняется в контексте мастер вкладки и false если выполняется в контексте salave вкладки. | + | В JavaScript API есть функция, которая из нескольких открытых вкладок назначает одну вкладку "главной" она называется мастер вкладкой, а все остальные вкладки определяются как salve вкладки. Функция isMaster возвращает true, если выполняется в контексте мастер вкладки и false если выполняется в контексте salave вкладки. |
<code JavaScript>cometApi.isMaster()</code> | <code JavaScript>cometApi.isMaster()</code> | ||
- | Определение какая вкладка является мастер вкладкой, а какая slave может быть полезно если вам надо сделать определённое действие только на одной вкладке а не во всех. | + | Определение, какая вкладка является мастер вкладкой, а какая slave может быть полезно если вам надо сделать определённое действие только на одной вкладке, а не во всех. |
- | Например у вас чат открыт на 3 страницах и при каждом входящем сообщении воспроизводится звуковое уведомление. В таком примере будет правильно если только одна вкладка будет воспроизводить звук а не все 3. | + | Например, у вас чат открыт на 3 страницах и при каждом входящем сообщении воспроизводится звуковое уведомление. В таком примере будет правильно если только одна вкладка будет воспроизводить звук а не все 3. |
Больше подробностей про взаимодействие между вкладками смотрите в статье [[https://habrahabr.ru/company/comet-server/blog/250719/|обмен сообщениями между вкладками браузера]]. | Больше подробностей про взаимодействие между вкладками смотрите в статье [[https://habrahabr.ru/company/comet-server/blog/250719/|обмен сообщениями между вкладками браузера]]. | ||
Строка 209: | Строка 209: | ||
<script src="//comet-server.ru/CometServerApi.js" type="text/javascript"></script> | <script src="//comet-server.ru/CometServerApi.js" type="text/javascript"></script> | ||
</code> | </code> | ||
- | Такой подход допустим только для тестов и в период разработки. Но не для постоянного использования. Так как по адресу [[http://comet-server.ru/CometServerApi.js]] расположена последняя на данный момент версия JavaScript Api и через некоторое время когда выйдет следующая версия JavaScript Api может случится так что она не будет иметь полную обратную совместимость с той версией которую использовали вы в период разработки. И ваше приложение может из за этого начать работать не верно или просто сломается. | + | Такой подход допустим только для тестов и в период разработки. Но не для постоянного использования. Так как по адресу [[http://comet-server.ru/CometServerApi.js]] расположена последняя на данный момент версия JavaScript Api и через некоторое время когда выйдет следующая версия JavaScript Api может случится так, что она не будет иметь полную обратную совместимость с той версией, которую использовали вы в период разработки. И ваше приложение может из-за этого начать работать не верно или просто сломается. |
- | Для предотвращения такой ситуации надо просто 1 раз скачать файл CometServerApi.js на свой сервер и потом использовать именно его до тех пор пока вам не понадобится обновить CometServerApi.js | + | Для предотвращения такой ситуации надо просто 1 раз скачать файл CometServerApi.js на свой сервер и потом использовать именно его до тех пор, пока вам не понадобится обновить CometServerApi.js |
====== Дополнительная информация ====== | ====== Дополнительная информация ====== |