1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/oimchat-oim-server

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

OIM即时通讯方案

OIM в настоящее время предлагает решения для мгновенных сообщений для серверной части, ПК и мобильных устройств.

Репозиторий Описание Примечание
oim-server Репозиторий исходного кода серверной части OIM Содержит Spring Cloud микросервисы и односерверную версию, добавление сервисов позволяет добавлять дополнительные функции
oim-fx Реализация настольного клиента на основе JavaFX Поддерживает Windows, Mac и Linux
oim-e Реализация настольного клиента на базе Electron Поддерживает Windows, Mac и Linux
oim-web Веб-платформа демонстрационный адрес
oim-m Мобильный клиент на Vue, который можно упаковать с помощью Cordova в приложения для Android и iOS

OIM серверная часть

Не позволяйте клиентам вводить вас в заблуждение, настоящая ценность — это серверная часть 😂.

Серверная часть OIM разработана на языке Java с использованием Spring Cloud для создания набора услуг мгновенного обмена сообщениями.

Предлагаются как односерверные, так и микросервисные решения, которые можно плавно переключать, а клиенты не замечают изменений в обслуживании.

Особенности

oim-сервер позволяет разрабатывать интерфейсы мгновенного обмена сообщениями аналогично Spring MVC. Это особенно полезно для разработчиков с опытом веб-разработки, но без опыта работы с серверными частями мгновенных обменных сообщений.

Пример:

Запрос интерфейса
@RestController
public class UserController {

    /**
     * 
     * Логин<br>
     * Дата 2019-02-17 12:26:38<br>
     * 
     * @param user
     * @since 1.0.0
     */
    @ActionMapping(value = "/user/login") // Этот маршрут также может быть использован для HTTP-запросов POST
    public User login(
            @Define("body.user") User user) { // "body.user"(это тело json в теле сообщения, а не тело протокола http) является путём json свойства тела {"body":{"user":{}}}
                                              // это сообщение или TCP, содержащее тело сообщения json
        // ...пропустить реализацию содержимого
        return user;
    }
}

Каталог

|__oim-server-run # Java-сервис
    |__cloud #микросервисная версия
        |__common #общедоступные зависимости jar
            |__oim-server-element-basic-* #эти зависимости являются общими для односерверных и микросервисов и содержат некоторые абстрактные определения, а микросервисы и одиночные серверы имеют разные реализации
            |__oim-server-element-cloud-* # эти зависимости необходимы для микросервисов, они реализуют некоторые функции микросервисов
        |__service #каждый запущенный микросервис
            |__core #основные типы технических управляющих микросервисов, таких как регистрационные центры и шлюзы
                |__action #собирает все адреса интерфейсов служб, чтобы шлюз мог напрямую обращаться к соответствующей службе без необходимости настройки имени службы
                |__admin #только интегрированный spring boot admin
                |__center #регистрационный центр
                |__gateway #шлюз
            |__net #длинные соединения TCP, WebSocket и т.д.
                |__control используется для управления (net-work) клиентами длинных соединений
                |__work клиенты длинных соединений
            |__support #общие вспомогательные услуги, такие как загрузка файлов
                |__file
            |__system #для всей системной конфигурации, общих данных и т. д.
                |__setting #
            |__work #бизнес-услуги (поскольку бизнес слишком длинный, есть и другие места, где можно использовать это имя)
                |__chat #чат
                |__contact #контакт
                |__core #ядро: пользователь
                |__group #группа
                |__portal #адрес службы входа
    |__single #односерверная версия
        |__oim-server-single-main # поскольку функциональные модули для одиночных серверов и микросервисов являются общими, здесь представлена простая реализация для некоторых абстрактных одиночных серверов
        |__oim-server-single-running #запуск конфигурации сервиса
|__oim-server-web # Vue-интерфейс администратора бэкенда

Архитектура микросервиса

https://www.processon.com/view/link/5f6c4ae11e08531ce9d4cf16 Содержит простое описание отношений между службами и шагов запуска.

Зависимости OIM

Прежде всего, следует отметить, что все фреймворки и сторонние фреймворки в oim-сервере являются открытыми исходными кодами. Среди них aware-xxx и wofa-server-xxx, only-xxx — это либо фреймворк, созданный автором, либо технический инструмент, и некоторые из них уже выпущены в центральный репозиторий maven. Цель oim-сервера состоит в том, чтобы он мог быть легко использован «из коробки», а также стать фреймворком, и максимально избегать ограничений на технические рамки. Все oim-серверы разделены на несколько модулей. Среди них wofa-server-xxx — моя собственная реализация мгновенных сообщений, которая также позволяет писать интерфейсы, подобные MVC, ниже приводится конкретное объяснение.

Адрес репозитория кода
https://gitee.com/onlylibrary
https://gitee.com/onlyaware

Разработка OIM

1、Требования к среде:
JDK 1.8.0_xxx
DB поддерживает MySQL Oracle SQL server рекомендуется MySQL 8.0

Микросервисы также требуют:
Redis
RabbitMQ

2、О версиях микросервисов и односерверных версиях
Бизнес-код микросервисов и односерверов является общим, поэтому бизнес-модули находятся в каталоге микросервисов. Разница заключается только в обработке IM длинных соединений и других мест, поэтому односерверные и микросервисы должны реализовывать различные места через интерфейсы, а затем реализовывать их отдельно при запуске различных сервисов.

3、О некоторых зависимостях, которые не могут быть загружены
Поскольку некоторые зависимости ещё не выпущены в центральный репозиторий maven, но находятся в моём частном репозитории, поэтому конфигурация глобального репозитория maven (обычно в файле .m2/setting.xml в домашнем каталоге пользователя) не может быть настроена
Зеркальный сервис (<mirrors></mirrors> частично закомментирован или удалён)
Конфигурация частного репозитория в проекте уже настроена

4、О скрипте базы данных
Просто создайте базу данных заранее, измените конфигурацию базы данных и автоматически создайте таблицы. В настоящее время создание таблиц по умолчанию в H2 проблематично, рекомендуется использовать MySQL 8.0

О wofa

В открытых проектах или на рынке большинство проектов мгновенных сообщений с открытым исходным кодом либо настраивают протоколы, либо используют XMPP. XMPP, основанный на xml, теперь немного сложно использовать. Другие частные протоколы в основном основаны на json, и oim также основан на json. Однако в принципе они используют поле, такое как cmd, для представления разных интерфейсов, например, 1, 2, 3, 4. Они реализуются с помощью if else для выполнения различных методов, некоторые из которых хорошо реализованы с использованием стратегии и других шаблонов проектирования. Эти форматы сообщений довольно просты и понятны. Простое функциональное развитие также происходит быстро. Но по мере увеличения количества интерфейсов и усложнения функций становится всё труднее поддерживать и расширять. wofa ссылается на spring mvc и обрабатывает сообщения tcp способом, аналогичным spring mvc. Хотя это принципиально не отличается от упомянутого выше cmd 1, 2, 3 и так далее, wofa предоставляет реализацию по умолчанию и свободу расширения. Независимо от того, используете ли вы формат сообщений oim или настраиваете его, вы можете реализовать его. С точки зрения разработки программного обеспечения, простые сообщения хороши, сложные сообщения не страшны, но важно иметь правила. Исходный код: https://gitee.com/onlyaware oim-e

oim-fx

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

введите сюда описание картинки

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Сервер системы чата OIM, разработан на языке Java, архитектура микросервисов Spring Cloud — были бы машины, а пользователи найдутся. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/oimchat-oim-server.git
git@api.gitlife.ru:oschina-mirror/oimchat-oim-server.git
oschina-mirror
oimchat-oim-server
oimchat-oim-server
master