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 разработана на языке 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-сервере являются открытыми исходными кодами. Среди них aware-xxx и wofa-server-xxx, only-xxx — это либо фреймворк, созданный автором, либо технический инструмент, и некоторые из них уже выпущены в центральный репозиторий maven. Цель oim-сервера состоит в том, чтобы он мог быть легко использован «из коробки», а также стать фреймворком, и максимально избегать ограничений на технические рамки. Все oim-серверы разделены на несколько модулей. Среди них wofa-server-xxx — моя собственная реализация мгновенных сообщений, которая также позволяет писать интерфейсы, подобные MVC, ниже приводится конкретное объяснение.
Адрес репозитория кода
https://gitee.com/onlylibrary
https://gitee.com/onlyaware
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
В открытых проектах или на рынке большинство проектов мгновенных сообщений с открытым исходным кодом либо настраивают протоколы, либо используют 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
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )