Skip to content

Современное веб-приложение для чата в реальном времени, построенное на Spring Boot с использованием WebSocket технологий.

Notifications You must be signed in to change notification settings

DesBasito/Chat_application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebSocket Chat Application

Современное веб-приложение для чата в реальном времени, построенное на Spring Boot с использованием WebSocket технологий.

🚀 Описание проекта

Это полнофункциональное чат-приложение, которое обеспечивает:

  • Публичное общение - отправка сообщений всем участникам чата
  • Приватные сообщения - индивидуальная переписка между пользователями
  • Уведомления в реальном времени - мгновенные оповещения о присоединении/выходе пользователей
  • Динамический список участников - отображение всех активных пользователей
  • Современный веб-интерфейс - отзывчивый дизайн с интуитивным управлением

🛠 Технологический стек

Backend

  • Spring Boot 3.1.3 - основной фреймворк приложения
  • Spring WebSocket - для двусторонней связи в реальном времени
  • STOMP Protocol - протокол обмена сообщениями поверх WebSocket
  • Lombok - для уменьшения boilerplate кода
  • Maven 3.9.9 - система сборки и управления зависимостями

Frontend

  • 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+

Локальный запуск

  1. Клонирование репозитория
git clone <repository-url>
cd websockets-chat
  1. Запуск через Maven
./mvnw spring-boot:run
  1. Альтернативный запуск
./mvnw clean package
java -jar target/SpringBootWebSockets-0.0.1.jar
  1. Открытие в браузере
http://localhost:8080

🏗 Архитектурные особенности

WebSocket Конфигурация

  • 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-уведомления
  • Мобильное приложение

Разработано с использованием современных веб-технологий для создания высокопроизводительного чата в реальном времени.

About

Современное веб-приложение для чата в реальном времени, построенное на Spring Boot с использованием WebSocket технологий.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published