Современное веб-приложение для чата в реальном времени, построенное на Spring Boot с использованием WebSocket технологий.
Это полнофункциональное чат-приложение, которое обеспечивает:
- Публичное общение - отправка сообщений всем участникам чата
- Приватные сообщения - индивидуальная переписка между пользователями
- Уведомления в реальном времени - мгновенные оповещения о присоединении/выходе пользователей
- Динамический список участников - отображение всех активных пользователей
- Современный веб-интерфейс - отзывчивый дизайн с интуитивным управлением
- Spring Boot 3.1.3 - основной фреймворк приложения
- Spring WebSocket - для двусторонней связи в реальном времени
- STOMP Protocol - протокол обмена сообщениями поверх WebSocket
- Lombok - для уменьшения boilerplate кода
- Maven 3.9.9 - система сборки и управления зависимостями
- HTML5 - структура веб-страниц
- CSS3 - стилизация и адаптивный дизайн
- Vanilla JavaScript (ES6+) - клиентская логика
- STOMP.js 7.0.0 - JavaScript клиент для STOMP протокола
- Thymeleaf - серверный шаблонизатор
- MVC Pattern - разделение логики на Model-View-Controller
- Record Classes (Java 14+) - неизменяемые структуры данных
- Service Layer - бизнес-логика в отдельном слое
- Event-Driven Architecture - обработка подключений/отключений через события
src/
├── main/
│ ├── java/kg/attractor/websockets/
│ │ ├── config/
│ │ │ └── WebSocketConfig.java # Конфигурация WebSocket
│ │ ├── controller/
│ │ │ ├── ChatController.java # Контроллер чата
│ │ │ └── WebController.java # Веб-контроллер
│ │ ├── enums/
│ │ │ └── Action.java # Типы действий пользователей
│ │ ├── model/
│ │ │ ├── Message.java # Модель сообщения
│ │ │ └── User.java # Модель пользователя
│ │ ├── services/
│ │ │ └── MemberStore.java # Сервис управления участниками
│ │ └── WebSocketsApplication.java # Главный класс приложения
│ └── resources/
│ ├── static/
│ │ ├── app.js # Клиентская JavaScript логика
│ │ └── style.css # Стили приложения
│ ├── templates/
│ │ └── index.html # Главная страница
│ └── application.properties # Конфигурация приложения
- Валидация имени пользователя (только буквы и цифры)
- Уникальная идентификация пользователей через UUID
- Автоматическое уведомление о новых участниках
- Публичные сообщения: видны всем участникам чата
- Приватные сообщения: доставляются только конкретному получателю
- Временные метки для всех сообщений
- Визуальное разделение приватных и публичных сообщений
- Автоматическая очистка при отключении пользователей
- Обработка непредвиденных разрывов соединения
- Динамическое обновление списка активных пользователей
- Java 17 или выше
- Maven 3.6+
- Клонирование репозитория
git clone <repository-url>
cd websockets-chat- Запуск через Maven
./mvnw spring-boot:run- Альтернативный запуск
./mvnw clean package
java -jar target/SpringBootWebSockets-0.0.1.jar- Открытие в браузере
http://localhost:8080
- Message Broker: простой брокер для топиков
/topicи/user - Application Prefix:
/appдля маршрутизации сообщений - User-specific destinations: индивидуальные каналы для приватных сообщений
- User: неизменяемый record с id, serialId и username
- Message: содержит пользователя, получателя, контент и тип действия
- Action enum: определяет типы событий (JOINED, LEFT, NEW_MESSAGE, etc.)
- In-memory хранение активных пользователей
- Thread-safe операции через статический список
- Автоматическая нумерация пользователей для UI
- Безопасность типов: использование современных Java features (Records, Optional)
- Реактивность: полностью асинхронная обработка сообщений
- Масштабируемость: возможность легкого расширения функциональности
- Производительность: минимальные накладные расходы благодаря STOMP протоколу
- Интеграция с базой данных для персистентности
- Аутентификация и авторизация пользователей
- Групповые чаты и каналы
- Загрузка файлов и медиа
- Push-уведомления
- Мобильное приложение
Разработано с использованием современных веб-технологий для создания высокопроизводительного чата в реальном времени.