Flamingo IM
Я специально записал для Flamingo два видео с техническими объяснениями, чтобы помочь читателям в изучении. В видео рассказывается о методах компиляции и развёртывания Flamingo, общей архитектуре, технических деталях реализации каждого модуля, а также о том, как изучать Flamingo. Если вам нужны видеоуроки, вы можете отсканировать QR-код [высокопроизводительного сервера разработки] и подписаться на него. После подписки ответьте «flamingo» в фоновом режиме, чтобы получить ссылку для скачивания.
Flamingo IM — это высокопроизводительное и лёгкое открытое программное обеспечение для мгновенного обмена сообщениями. На данный момент оно включает серверную часть, клиентскую часть для ПК, версии для Android и iOS, которые находятся в разработке.
На данный момент реализованы следующие функции (здесь перечислены только сетевые функции, другие уже реализованные функции для клиентов не включены, пожалуйста, найдите их самостоятельно):
Установите cmake, makefile и gcc.
Система — Linux, рекомендуемая версия — CentOS 7.0 или выше. Код сервера написан на чистом C++11, поэтому ваша версия gcc/g++ должна быть не ниже 4.7, рекомендуется использовать версию 4.8.5. Кроме того, используйте cmake и makefile для управления проектами и компиляции, поэтому вам необходимо установить эти инструменты.
Установите mysql.
Используемая база данных — mysql, если вы используете CentOS 7.0 и выше, вам нужно установить mariadb-server, mariadb-client и mariadb-devel. Если вы используете другую версию Linux, установите mysql-server, mysql-client и mysql-devel.
Чат-сервер будет использовать mysql, имя базы данных mysql по умолчанию — flamingo, имя пользователя и пароль для входа настраиваются в файле flamingoserver/etc/chatserver.conf
.
При первом запуске чат-сервера программа автоматически проверит, существует ли библиотека с именем flamingo. Если нет, она создаст её и проверит, существуют ли соответствующие таблицы данных. Если нет, они будут созданы. Поэтому нет необходимости создавать соответствующие библиотеки и таблицы вручную. Конечно, из-за различий в версиях mysql могут быть небольшие различия в синтаксисе SQL, что может привести к сбою при создании таблиц. В этом случае вам, возможно, придётся создать таблицы вручную, инструкции создания таблиц находятся в flamingoserver/table.sql. В настоящее время используются четыре таблицы:
Таблица | Назначение |
---|---|
t_user | Информация о пользователе |
t_user_relationship | Информация о друзьях и членах группы |
t_chatmsg | История чата |
Войдите в каталог flamingoserver
и выполните:
cmake .
Если ошибок нет, будет создан файл Makefile.
Выполните следующую команду для создания исполняемых файлов: chatserver, fileserver, imgserver.
make
Функции каждого сервиса следующие:
Сервис | Назначение |
---|---|
chatserver | Чат-сервис для базовой регистрации пользователей, входа в систему и функций чата. |
fileserver | Сервис файлов для отправки автономных файлов в окне чата и автоматической загрузки пакетов обновлений. |
imgserver | Сервис изображений для отправки файлов изображений в чате и загрузки и выгрузки пользовательских аватаров. |
chatserver, fileserver и imgserver — независимые сервисы, которые можно запускать непосредственно в Linux или запускать как демоны. Команда запуска демона:
./chatserver -d
./fileserver -d
./imgserver -d
Вы можете использовать команду lsof
для проверки того, находится ли порт в состоянии прослушивания:
[zhangyl@localhost flamingoserver]$ lsof -i -Pn
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chatserve 18540 zhangyl 19u IPv4 1129031 0t0 TCP *:20000 (LISTEN)
chatserve 18540 zhangyl 27u IPv4 1129032 0t0 TCP *:8888 (LISTEN)
chatserve 18540 zhangyl 35u IPv4 1129033 0t0 TCP *:12345 (LISTEN)
fileserve 18552 zhangyl 25u IPv4 1130523 0t0 TCP *:20001 (LISTEN)
imgserver 18562 zhangyl 25u IPv4 1131971 0t0 TCP *:20002 (LISTEN)
Порт | Принадлежность к сервису | Назначение |
---|---|---|
20000 | chatserver | Порт чата |
8888 | chatserver | Мониторинг порта чат-сервиса, который можно использовать для удалённого подключения к чат-сервису через telnet или nc для просмотра некоторой информации о состоянии чат-сервиса в реальном времени. |
12345 | chatserver | HTTP-порт чат-сервиса. Чат-сервис поддерживает не только длительное соединение, но и короткое HTTP-соединение. |
20001 | fileserver | Порт файлового сервиса |
20002 | imgserver | Порт сервиса изображений |
После успешного подключения вы можете ввести соответствующую команду для просмотра состояния сервера, в настоящее время реализованы только три команды, которые были показаны ранее: help, ul и su. Вы можете продолжать добавлять больше команд.
Обратите внимание: серверный код — это не только код сервера для программного обеспечения для мгновенного обмена сообщениями, но и универсальная серверная структура C++11.
Откройте Flamingo.sln в каталоге flamingoclient/ с помощью Visual Studio 2019. Это решение включает в себя три проекта:
Проект | Описание |
---|---|
Flamingo.sln | Основная программа для версии flamingo для ПК |
CatchScreen | Программа для захвата экрана во время чата, аналогичная функции скриншота QQ |
iUpdateAuto | Инструмент для автоматического обновления zip-файла на стороне клиента |
Скомпилированные программы находятся в каталоге Bin, а информация о конфигурации соединения между клиентом и сервером находится в файле config\flamingo.ini. Просто откройте Flamingo.exe, чтобы запустить версию flamingo для ПК.
Используйте Android Studio для открытия проекта Android в каталоге flamingoAndroid/ и скомпилируйте его, чтобы создать соответствующий файл flamingo.apk. Установите его на свой телефон Android, чтобы использовать. Настройки соединения с сервером находятся на странице настроек сервера в интерфейсе входа в систему версии для Android.
Из-за плотного графика работы я не могу регулярно обновлять flamingo, но я обещаю продолжать поддерживать его. Чтобы просмотреть журнал обновлений, посетите:
https://github.com/baloonwj/flamingo/issues/1
Если вы обнаружите какие-либо ошибки при использовании, вы можете связаться со мной по электронной почте: balloonwj@qq.com или посетить страницу обратной связи по ошибкам:
https://github.com/baloonwj/flamingo/issues/5.
Я решу серьёзные ошибки, такие как сбои и зависания, в течение трёх рабочих дней; другие функциональные ошибки, не влияющие на использование, будут решены в течение двух недель.
Если у вас возникнут проблемы при использовании этого проекта, или у вас есть какие-либо мнения или предложения относительно моего проекта, или если у вас есть хорошие идеи, вы можете общаться со мной. Добавьте меня в WeChat easy_coder или присоединитесь к технической группе QQ: 729995516.
Снимок версии для ПК:
Снимок версии для Android:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )