Дизайн-концепция никогда не устаревает!
Описание (данный проект фокусируется не на использовании и развёртывании, а на предоставлении решения для обмена мгновенными сообщениями (IM), предлагая концепцию дизайна, включая разработку простой базы данных)
- Файлы базы данных могут немного отличаться от этого проекта, но это не влияет на работу, поскольку у Alibaba Cloud истёк срок оплаты, что привело к освобождению ресурсов, и база данных не была своевременно зарезервирована. Поэтому у меня нет актуальной версии файла с дизайном базы данных.
- Первая версия была написана в спешке, многие идеи не были реализованы, модули не разделены, имена и стандарты кодирования не соответствуют требованиям, также есть несколько очевидных уязвимостей. Пожалуйста, не используйте их неправильно.
- Архитектура (смотрите на эту диаграмму как на чтение десятилетней книги): https://www.processon.com/view/link/5a50a4bee4b0a447b9910216
- База данных (подходит для всех IM): https://www.processon.com/view/link/598876dde4b0e56e5d07f787
- Авторский WeChat: 875079028. На самом деле, функционал очень прост, каждый может его реализовать, просто никто не берётся за это, либо из-за отсутствия времени, либо из страха перед трудностями. Вот почему я решил сделать это сам. Этот проект в основном предназначен для предоставления концепции и идей!
- Проект очень простой, всего один контроллер (легко преобразовать в Springboot), две страницы (страница входа и страница чата).
- Идентификатор пользователя или учётная запись — это тема MQTT, пароль пользователя или учётные данные — это имя пользователя и пароль для подключения к MQTT (файл конфигурации проекта по умолчанию содержит адрес сервера MQTT, который можно временно не настраивать самостоятельно).
- Веб-интерфейс администратора IM пока не открыт для общественности (для централизованного управления компаниями, добавления групп, отделов и друзей, обслуживания клиентов и т. д.).
- Проект всё ещё актуален, и его обновление не происходит из-за отсутствия необходимости в модернизации. Он очень стабилен (в то время Springboot ещё не был популярен, и разделение между фронтендом и бэкендом тоже не было распространено).
- Видео проекта: нажмите здесь, чтобы посмотреть
Основные технологии
Веб-система обмена мгновенными сообщениями, все операции выполняются без обновления страницы после входа в систему (отправка/получение/офлайн).
Используется протокол MQTT, позволяющий использовать преимущества самого протокола, такие как отсутствие необходимости разработки групповых сообщений и получения сообщений от нескольких клиентов.
Использует JFinal, что упрощает и ускоряет разработку на начальном этапе, но усложняет расширение в будущем. Многие функции не поддерживаются, и интеграция затруднена. Рекомендуется перейти на Springboot, где уже есть успешные примеры такой миграции.
Однако этот проект в первую очередь предназначен для понимания концепции обмена мгновенными сообщениями и принципов работы, а не для расширения функциональности.
В качестве протокола связи используется MQTT, для которого необходимо настроить собственный MQ-сервер (можно использовать любой MQ-брокер, поддерживающий протокол MQTT).
Причина использования этого протокола заключается в том, что он предоставляет удобные механизмы подписки и публикации, а также имеет клиентские SDK для различных систем и языков программирования. Я рекомендую всем, кто разрабатывает системы обмена мгновенными сообщениями, использовать этот протокол (основная сложность заключается в логическом проектировании тем).
** Основная идея заключается в умном использовании логики «+» и «#» в темах MQTT для определения того, предназначены ли сообщения для группы или отдельного пользователя.**
** Обработка состояния онлайн также осуществляется с помощью механизмов MQTT, таких как сообщения о состоянии и сердцебиение.**
Неважно, является ли получение сообщений push-уведомлениями или pull-запросами, оба подхода подходят. Хотя технология проста, она обладает высокой функциональностью и имеет некоторые уязвимости.
Адреса для скачивания MQTT
https://docs.emqx.cn/cn/broker/latest/getting-started/install.html
https://docs.emqx.cn/cn/broker/latest/development/resource.html
Основные функции
- История чата
- Добавление друзей
- Создание и управление группами
- Частные беседы с друзьями
- Групповые беседы с друзьями
- Уведомления об офлайн-сообщениях (важная функция)
- Отправка файлов
- Онлайн-уведомления (важная функция)
- Управление группами друзей
- Поиск друзей
- Отмена отправки сообщений (на стадии тестирования)
- Удаление друзей
- Выход из групп
- Информация о статусе друзей (важная функция, актуальная информация)
- Обработка ошибок при потере соединения (важная функция, совместима со всеми браузерами, точность информации о статусе 100%)
- Изменение личной информации (вторая версия)
- Просмотр подробной информации о друзьях (вторая версия)
- Получение сообщений (поддерживается несколькими клиентами, получение сообщений)
- Перемещение друзей по группам (вторая версия)
- Просмотр детальной информации о друзьях (вторая версия)
- Модификация комментариев (комментарии друзей/групп)
- Шифрование сообщений (вторая версия)
Комментарии ( 0 )