Различия

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

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

comet:star-comet-chat [2017/07/16 16:48]
levhav
comet:star-comet-chat [2019/12/18 01:58]
Строка 1: Строка 1:
-<​rst>​RU::​14-Список готовых решений использующих CppComet::​Интегрируемый чат плагин</​rst>​ 
  
-====== Интегрируемый чат плагин ====== 
- 
-Готовый к встраиванию в ваш сайт чат плагин личной переписки между пользователями. 
- 
-Исходные коды размещены на [[https://​github.com/​Levhav/​Star.Comet-Chat|GitHub]],​ [[http://​comet-server.ru/​doc/​CometQL/​Star.Comet-Chat/​backend-example/​index.php|Демо версия чата]] 
- 
-<note tip>​Чат ​ опубликован под лицензией Apache License 2.0 
-По всем вопросам обращайтесь в скайп Levhav или на почту support@comet-server.ru</​note>​ 
-====== Функционал чата ====== 
- 
-  * Возможность передавать текстовые сообщения с прикреплённым изображением 
-  * Содержит возможность поиска контактов в списке контактов 
-  * Отдельные вкладки для списков избранных и заблокированных пользователей 
-  * Звуковое уведомление при получении сообщения 
-  * Кнопка пожаловаться 
-  * Пригоден для работы в мобильных браузерах 
-  * Отслеживание прочитано сообщение или нет. И как только сообщение будет прочитано получателем у отправителя появится на против сообщения две галочки 
-  * Перевод сообщений с помощью api яндекс переводчика 
- 
-====== Функционал админки чата ====== 
- 
-  * Real-time мониторинг всех сообщений пользователей 
-  * Просмотр диалога любых двух пользователей 
-  * Возможность просматривать все сообщения отдельно выбранного пользователя 
-  * Список жалоб на пользователей от других пользователей 
-  * Возможность просматривать только сообщения с вложениями 
- 
-{{ :​star-comet-chat:​screenshot_21_.png?​600 |}} 
- 
-====== Скриншоты чата ====== 
- 
-{{ :​star-comet-chat:​screenshot_4_.png?​600 ​ |Внешний вид чата}} 
-====== Как встроить чат на сайт ====== 
- 
-<note tip>​Если вы решили использовать этот чат или его модификации то пожалуйста сообщите об этом на адрес star-chat@comet-server.ru в данный момент в статье не хватает ссылок на успешные примеры использования чата и отзывов на этот плагин чата. 
- 
-Если возникнут трудности в интеграции то обращайтесь в техническую поддержку. 
-</​note>​ 
- 
-Чат может быть размещён как на отдельном сервере так и на том же сервере где и основной сайт. Чат взаимодействует с вашим сайтом через простое api. 
-У чата все данные хранятся в собственной бд и информацию о пользователях и данные для авторизации он получает путём отправки запросов к вашему сайту. 
- 
-Для установки чата на своём сервере вам понадобится скачать все исходники от [[https://​github.com/​Levhav/​Star.Comet-Chat|сюда]] 
- 
-Среди исходников будет файл database.sql в нём содержится структура таблиц необходимая для работы чата. На основании этого файла создаём базу данных. 
- 
-Затем надо подправить конфигурацию в файлах. 
-  * ./​config.php 
-  * ./​backend-example/​config.php 
- 
-В файле ./​config.php надо указать настройки для чата для подключения к базе данных. Для хранения переписки. И надо задать настройки доступа к комет серверу для рассылки уведомлений. 
-<code php> ​ 
-/** 
- * Доступ к БД 
- */ 
-$conf['​mysql_db'​] = "​StarCometChat";​ 
-$conf['​mysql_user'​] = "​StarCometChat";​ 
-$conf['​mysql_pw'​] = "​RLUJ4TXE22XL5JTh";​ 
-$conf['​mysql_host'​] = "​localhost"; ​ 
- 
-/** 
- * Доступ к комет серверу 
- * Получить ключи доступа можно здесь https://​comet-server.ru/​menu_id/​10 
- */ 
-$conf['​cometQL_dev_id'​] = "​lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB8";​ 
-$conf['​cometQL_key'​] = 15; 
-</​code>​ 
- 
-Так же в файле ./​config.php есть опция admin_ids которая позволяет перечислить идентификаторы всех пользователей у которых есть права администраторов. Наделять такими правами очень много пользователей не рекомендуется,​ так как это может повлиять на скорость работы чата. 
-<code php> 
-$conf['​admin_ids'​] = array(1, 2);    // Список id пользователей с правами администратора 
-</​code>​ 
- 
-Параметр trusted_ip в файле ./​config.php должен содержать ip сервера с которого разрешены вызовы api чата. 
-<code php> 
-/** 
- * ip адрес с которого разрешено вызывать api методы управления чатом 
- * Или false если ограничение отключено (не безопасно) 
- */ 
-$conf['​trusted_ip'​] = false; 
-</​code>​ 
-<note warning>​По умолчанию параметр trusted_ip равен false так как это пример. В реальном приложении необходимо указать ip адрес с которого разрешены запросы к api чата.</​note> ​ 
- 
-Переменная $trusted_ip в файле ./​backend-example/​config.php должна содержать ip адрес сервера на котором расположен чат. 
-<code php> 
-/** 
- * ip адрес с которого разрешено вызывать api методы управления чатом 
- * Или false если ограничение отключено (не безопасно) 
- */ 
-$trusted_ip = false; 
-</​code>​ 
-<note warning>​По умолчанию переменная $trusted_ip равна false так как это пример. В реальном приложении необходимо указать ip адрес с которого разрешены запросы к api бекенда.</​note> ​ 
-===== Обмен данными ===== 
- 
-В директории backend-example расположены файлы с примером интеграции чата в php проект. Для того чтобы интегрировать чат в ваш проект вам необходимо создать обработчики на те запросы которые будет отправлять модуль чата для получения данных о зарегистрированных у вас пользователях. 
- 
-==== URL_getUsersInfo ==== 
- 
-Чат будет отправлять вашему проекту post запросы для получения информации о пользователях. Адрес на который будут отправляться эти запросы задаётся в файле ./​config.php,​ имя параметра "​URL_getUsersInfo"​ 
-Вот фрагмент кода в котором определено это значение. 
-<code php> 
-/** 
- * URL для запроса информации о пользователях в json 
- */ 
-$conf['​URL_getUsersInfo'​] = '​http://​comet-server.ru/​doc/​CometQL/​Star.Comet-Chat/​backend-example/​chat_get_users.php'; ​ 
-</​code>​ 
- 
-В запросе в параметре users будет передан список id пользователей через запятую для которых необходимо вернуть данные. 
-<​code>​ 
-POST /​doc/​CometQL/​Star.Comet-Chat/​backend-example/​chat_get_users.php HTTP/1.1 
-Host: comet-server.ru 
-Origin: https://​comet-server.ru 
- 
-users=1,2 
-</​code>​ 
-В ответ он будет ожидать json строку со следующими объектами. 
-<code JavaScript>​ 
-[{ 
-    "​user_id":​1,​ 
-    "​avatar_url":"​http:​\/​\/​comet-server.ru\/​doc\/​CometQL\/​Star.Comet-Chat\/​img\/​avatar0.png",​ 
-    "​name":"​Виктор",​ 
-    "​city":"​Владивосток",​ 
-    "​age":​24,​ 
-    "​status":"​active",​ 
-    "​login":"​victor"​ 
-}, 
-{ 
-    "​user_id":​2,​ 
-    "​avatar_url":"​http:​\/​\/​comet-server.ru\/​doc\/​CometQL\/​Star.Comet-Chat\/​img\/​avatar0.png",​ 
-    "​name":"​Лена",​ 
-    "​city":"​Владивосток",​ 
-    "​age":​25,​ 
-    "​status":"​active",​ 
-    "​login":"​lena"​ 
-},] 
-</​code>​ 
-Файл ./​backend-example/​chat_get_users.php содержит в себе код который правильно обрабатывает запрос и отдаёт правильные данные. 
- 
-==== URL_getUsersHash ==== 
- 
-Для получения хеша авторизации пользователя чат будет отправлять post запрос на адрес который содержится в параметре URL_getUsersHash в файле ./​config.php,​ 
-Вот фрагмент кода в котором определено это значение. 
-<code php> 
-/** 
- * URL для запроса хеша авторизации 
- */ 
-$conf['​URL_getUsersHash'​] = '​http://​comet-server.ru/​doc/​CometQL/​Star.Comet-Chat/​backend-example/​chat_get_user_hash.php';​ 
-</​code>​ 
- 
-В запросе в параметре id будет передан id пользователя для которого необходимо получить хеш авторизации. 
-<​code>​ 
-POST /​doc/​CometQL/​Star.Comet-Chat/​backend-example/​chat_get_user_hash.php HTTP/1.1 
-Host: comet-server.ru 
-Origin: https://​comet-server.ru 
- 
-id=1 
-</​code>​ 
-В ответ он будет ожидать строку хеша авторизации 
-<code JavaScript>​56ff3f23bfd1071e14749aad42e58d89</​code>​ 
-Файл ./​backend-example/​chat_get_user_hash.php содержит в себе код который правильно обрабатывает запрос и отдаёт правильные данные. 
- 
- 
-===== JavaScript вызовы чата ===== 
- 
-Файл ./​backend-example/​userPage.php представляет из себя пример страницы пользователя. В нём есть пример интеграции JavaScript вызовов чата в страницы сайта. 
- 
-Вот приведён код запуска чат плагина. 
-<code JavaScript>​ 
-var user_id = <?php echo $_SESSION['​userId'​];​ ?>;  ​ 
-var user_key = "<?​php echo getUserHash($_SESSION['​userId'​]);​ ?>";  ​ 
-        ​ 
-$(document).ready(function() 
- 
-    /** 
-     * Подключение к комет серверу. Для возможности принимать команды. 
-     * dev_id ваш публичный идентификатор разработчика 
-     * user_id идентификатор пользователя под которым вы вошли. 
-     * user_key ваш хеш авторизации. 
-     */ 
-    CometServer().start({dev_id:​15,​ user_id:​user_id,​ user_key: user_key}) 
-      
-    /** 
-     * Инициализируем модуль чата, происходит инициализация и загрузка данных необходимых для работы. 
-     * Но окно чата этим вызовом не открывается. 
-     */ 
-    StarCometChat.init({ 
-        user_id: user_id, 
-        user_key: user_key, ​ 
-        open:false, 
-        ​ 
-        // Параметр home_dir содержит адрес расположения php скриптов чата 
-        home_dir: "​http://​comet-server.ru/​doc/​CometQL/​Star.Comet-Chat",​ 
-        ​ 
-        // Функция назначенная в success вызывается после успешной инициализации чата. 
-        success:​function() 
-        { 
-            // Вызов countNewMessagesSum возвращает количество новых сообщений. Работает корректно только после завершения инициализации чата 
-            var c = StarCometChat.countNewMessagesSum();​ 
-            if(c > 0) 
-            { 
-                $('#​newMsgIndicator'​).html("​У вас "+ c + " новых сообщений"​);​ 
-            } 
-        } 
-    }); 
-}); 
-</​code>​ 
- 
-Надеюсь комментарии в коде понятны. Следует отметить что для человек получает статус online только после того как выполняется код подключения к комет серверу. 
- 
-=== После завершения инициализации доступны следующие вызовы:​ === 
-Возвращает кол-во непрочитанных сообщений 
-<code JavaScript>​StarCometChat.countNewMessagesSum()</​code>​ 
-Возвращает кол-во непрочитанных сообщений от пользователя user_id 
-<code JavaScript>​StarCometChat.countNewMessages(user_id)</​code>​ 
-Открывает список диалогов 
-<code JavaScript>​StarCometChat.openDialog()</​code>​ 
-Открывает диалог с пользователем user_id 
-<code JavaScript>​StarCometChat.openDialog(user_id)</​code>​ 
- 
- 
-===== Решение проблем ===== 
- 
-Для включения вывода ошибок надо добавить в файл config.php код: 
-<code php> 
-ini_set('​display_errors','​on'​);​ 
-error_reporting (E_ALL & ~E_NOTICE); 
-</​code>​ 
- 
-Ошибка о том что указаны не верные пути к файлам чата выглядит как то так: 
-<code php>​Error in line 14 include_once $_SERVER['​DOCUMENT_ROOT'​].'/​config.php';</​code>​ 
- 
- 
-Ошибка при загрузке файла похожая на эту 
-<​code>​ 
-Warning: move_uploaded_file(/​home/​www-data/​web/​comet-server.com/​chatFiles/​3_2_1488678883243.png):​ failed to open stream: No such file or directory in /​home/​www-data/​web/​administrator/​sub_sites/​comet.cms-machaon.ru/​doc/​CometQL/​Star.Comet-Chat/​sendMessage.php on line 62 
- 
-Warning: move_uploaded_file():​ Unable to move '/​tmp/​php27nQco'​ to '/​home/​www-data/​web/​comet-server.com/​chatFiles/​3_2_1488678883243.png'​ in /​home/​www-data/​web/​administrator/​sub_sites/​comet.cms-machaon.ru/​doc/​CometQL/​Star.Comet-Chat/​sendMessage.php on line 62 
-</​code>​ 
-говорит о том что нет папки chatFiles или нет прав на запись в неё. 
- 
-== Как попасть в админку?​ == 
- 
-Список пользователей с правами администратора задаётся в файле config.php в функции getAdminIds() 
-{{ :​star-comet-chat:​снимок_экрана_от_2017-03-06_14-39-30.png |}}