JuggleIM: сервер для мгновенных сообщений с поддержкой WebSocket и REST API
JuggleIM — это высокопроизводительный и масштабируемый сервер для мгновенных сообщений, написанный на Go. Он позволяет создавать приватные чаты, группы, чатрумы и предоставляет WebSocket и REST API для интеграции в приложения.
Основная задача проекта — предоставить разработчикам удобный инструмент для добавления функций обмена сообщениями в свои приложения без необходимости создавать инфраструктуру с нуля. В отличие от популярных облачных решений, JuggleIM можно развернуть на собственных серверах, что дает больший контроль над данными и конфиденциальностью. Это подходит как для стартапов, так и для больших компаний, желающих внедрить собственное решение для общения.
Запуск сервера осуществляется с использованием Go версии 1.25.12, и для развертывания доступны подробные инструкции в документации. Обратите внимание, что проект всё еще активно развивается, и его функционал может изменяться.
Проект JuggleIM представляет собой высокопроизводительную открытую систему обмена мгновенными сообщениями (IM), которую можно развернуть на своем сервере. Разработанная с использованием протокола Protobuf и WebSocket, эта система обеспечивает эффективную доставку сообщений и надежное хранилище данных, что позволяет быстро интегрировать возможности чата в ваше приложение, веб-сайт или бизнес-систему.
JuggleIM поддерживает множество сценариев использования, включая социальные приложения, системы обслуживания клиентов, коммуникацию с IoT-устройствами, чат во время live-трансляций и взаимодействие с AI-ботами. Одной из ключевых особенностей является поддержка многопользовательской (multi-tenant) архитектуры, что позволяет одной установке обслуживать несколько изолированных приложений. Профессиональное издание системы может масштабироваться горизонтально и поддерживать сотни миллионов активных пользователей в день.
Ключевые особенности
- Поддержка протоколов Protobuf и WebSocket для низкого потребления трафика и высокой пропускной способности.
- Возможность кластерного развертывания, поддерживающего масштабирование без ограничений.
- Обеспечение безопасности с использованием токенов для аутентификации и HTTPS/WSS для защиты передачи данных.
- Поддержка развертывания в облаках, а также возможность глобальной оптимизации ссылок для приложений, работающих на международном уровне.
- Наличие SDK для различных платформ (Android, iOS, Web, PC, Flutter и HarmonyOS) и обширный REST API для интеграции с существующими системами.
Установка и запуск
Для быстрого развертывания JuggleIM с использованием Docker выполните следующие команды:
git clone https://github.com/juggleim/im-server.git
cd im-server
docker compose up -d
После успешного запуска контейнеров, локальные сервисы будут доступны по следующим адресам:
- API сервера:
http://127.0.0.1:9001 - Навигатор:
http://127.0.0.1:9002 - WebSocket:
ws://127.0.0.1:9003 - Административная консоль:
http://127.0.0.1:8090(логин: admin, пароль: 123456)
Для остановки локальной установки используйте команду docker compose down. Чтобы удалить данные MySQL, добавьте -v к команде.
Ограничения
Хотя JuggleIM предлагает высокую производительность и гибкость, пользователю необходимо учитывать несколько нюансов:
- Для успеха развертывания сервера требуется правильно настроенная база данных MySQL, а также опционально MongoDB, если вы решили использовать его для хранения сообщений.
- Дополнительную настройку может потребоваться для поддержания подключения и безопасности при публичном доступе к сервисам.
- Некоторые компоненты, такие как desktop SDK, на данный момент не являются открытыми и доступны только по запросу.
С подробной информацией о конфигурации, архитекотуре и интеграции можно ознакомиться в документации на официальном сайте JuggleIM.
Открыть на GitHub: juggleim/im-server →
RepoRadar