Flamingo
Flamingo — это высокопроизводительное и лёгкое программное обеспечение для обмена мгновенными сообщениями с открытым исходным кодом. На данный момент оно включает в себя серверную часть, версию для Windows PC и версию для Android. В разработке находятся версии для WeChat и iOS.
В Flamingo реализованы следующие функции (напоминаем, что здесь мы перечисляем только функции, связанные с сетевым взаимодействием, а некоторые другие функции вы можете изучить самостоятельно).
Сервер Flamingo основан на платформе Linux OS (рекомендуется CentOS 7.0), и требуются компиляторы, поддерживающие C++ 11, поскольку серверный код полностью разрабатывается с использованием C++ 11. Поэтому в Linux OS версия gcc/g++ должна быть выше 4.7 (рекомендуется 4.8.5). Кроме того, необходимы инструменты cmake и makefile, поэтому их необходимо установить.
Сервер Flaming использует базу данных mysql для хранения пользовательских данных. Если ваша ОС — CentOS 7.0, вам необходимо установить mariadb-server, mariadb-client и mariadb-devel. В других Linux OS вам нужно установить mysql-server, mysql-client и mysql-devel.
Чат-сервер Flamingo будет использовать базу данных mysql. База данных по умолчанию называется «flamingo». Имя базы данных, учётная запись пользователя (включая имя пользователя, пароль и т. д.), настроено в файле flamingoserver/etc/chatserver.conf. Вы можете изменить эту конфигурацию по своему усмотрению.
Когда чат-сервер запускается в первый раз, он проверяет, существует ли настроенные вами базы данных в mysql. Если её нет, чат-сервер создаст её, включая создание связанных таблиц. Таким образом, вам не нужно создавать базу данных и таблицы вручную. Однако синтаксис SQL для создания таблицы немного отличается в разных версиях mysql, и некоторые SQL для создания таблиц могут не работать в некоторых версиях mysql, поэтому в этом случае вам придётся создать таблицы вручную. Мы подготовили эти SQL для вас в файле flamingoserver/table.sql.
Сервер Flamingo использует четыре таблицы базы данных, показанные ниже:
Имя таблицы | Использование |
---|---|
t_user | хранение учётных записей пользователей |
t_user_relationship | хранение информации о взаимоотношениях пользователей и членов групп |
t_chatmsg | хранение сообщений чата |
Войдите в каталог flamingoserver/, затем введите команды ниже:
cmake .
Если ошибок не возникает, будет создан файл Makefile. Мы используем этот Makefile для генерации исполняемых программ сервера на следующем этапе.
Выполните команды ниже, чтобы сгенерировать исполняемые программы: chatserver, fileserver, imgserver.
make
``` Регистрация, вход в систему и общение в чате, а также другие основные функции обмена мгновенными сообщениями |
| Файловый сервер | для передачи файлов в автономном режиме при общении и обновлении ПК |
| Сервер изображений | для загрузки и скачивания аватаров пользователей и отправки изображений в чате |
###### Как запустить серверы
**chatserver**, **fileserver** и **imgserver** независимы друг от друга. Вы можете запустить один из них в оболочке Linux или запустить в режиме демона. Используйте следующие команды для запуска их в режиме демона:
```shell
./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 | Порт для мониторинга внутреннего состояния chatserver. Вы можете использовать команды telnet или nc для подключения к chatserver, чтобы получить некоторую информацию о реальном времени и статусе chatserver |
12345 | chatserver | HTTP-сервисный порт для chatserver. Chatserver поддерживает как длинные TCP-соединения, так и короткие HTTP-соединения |
20001 | fileserver | Порт для передачи файлов |
20002 | imgserver | Порт для передачи изображений чата или аватаров пользователя |
Мы можем использовать команду Linux nc для подключения к порту 8888 chatserver в таблице выше в форме nc -v ip port. Здесь порт равен 8888, а опция -v заставляет команду nc отображать более подробную информацию. Вот использование:
[zhangyl@localhost flamingoserver]$ nc -v 127.0.0.1 8888
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:8888.
1. help-show help info
2. ul-show online user list
3. su-show userinfo specified by userid: su [userid]
ul
No user online.
su
please specify userid.
help
1. help-show help info
2. ul-show online user list
3. su-show userinfo specified by userid: su [userid]
Когда вы успешно подключитесь к chatserver с помощью nc, вы можете ввести любую из команд в данном списке. Я реализовал только три команды в качестве примеров: help, ul, su. Вы можете добавить больше функциональных команд, если вам нужно.
Подсказка: Код сервера — это не только исходный код сервера обмена мгновенными сообщениями, но и мощная сетевая структура, написанная на C++ 11. Вы сможете извлечь из неё больше пользы, если изучите её подробнее.
Всё, что вам нужно сделать, это просто открыть файл Flamingo.sln в каталоге flamingoclient/ с помощью Visual Studio 2019 и скомпилировать его. Решение включает в себя три проекта, показанных в таблице ниже:
Название проекта | Использование |
---|---|
Flamingo | Основная исполняемая программа клиента Flamingo для ПК |
CatchScreen | Инструмент для захвата экрана в окне чата |
iUpdateAuto | Распаковка загружаемых файлов при обновлениях |
Когда компиляция завершена успешно, исполняемые программы будут находиться в каталоге flamingoclient\Bin. А файл конфигурации, содержащий настроенные строки, находится в файле flamingoclient\Bin\config\flamingo.ini. Запустите Flamingo.exe и получайте удовольствие!
Используйте Android Studio, чтобы открыть проект в каталоге flamingoAndroid/ и собрать его для создания файла flamingo.apk. Установите flamingo.apk на свои мобильные устройства. Настройки сервера версии Android находятся в окне входа в систему.
Журнал изменений
Боюсь, что я не смогу поддерживать Flamingo регулярно, потому что очень занят своей работой. Но обещаю, что буду постоянно поддерживать Flamingo.
Журнал изменений см. здесь:
https://github.com/baloonwj/flamingo/issues/1
Отчёт об ошибках
Если у вас есть какие-либо вопросы, вы можете связаться со мной, отправив электронное письмо на адрес balloonwj@qq.com. Также вы можете сообщить о любых ошибках на странице Отчёта об ошибках, её ссылка — https://github.com/baloonwj/flamingo/issues/5.
Обещаю, что фатальная проблема Flamingo, такая как сбой или зависание, будет решена в течение трёх рабочих дней, а другие вопросы, которые не являются серьёзными, будут решены в течение двух недель.
Контакты
Наконец, если у вас есть предложения или хорошие советы, добро пожаловать ко мне. Пользователи материкового Китая могут связаться со мной, присоединившись к моей группе QQ (729995516) или связавшись с моим публичным аккаунтом в веб-чате (『easyserverdev』). Также вы можете отправлять мне электронные письма, мой адрес электронной почты — balloonwj@qq.com. Я искренне жду Вас.
Снимок экрана с функциями ниже:
Версия для Android
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )