Skip to content

feat: базовый P2P консольный чат на Java 21 - #1

Merged
DimaRus05 merged 18 commits into
mainfrom
feature/p2p-chat
Mar 30, 2026
Merged

feat: базовый P2P консольный чат на Java 21#1
DimaRus05 merged 18 commits into
mainfrom
feature/p2p-chat

Conversation

@DimaRus05

Copy link
Copy Markdown
Owner

Этот PR добавляет базовую рабочую версию peer-to-peer консольного чата без центрального сервера. Узел может работать в режиме ожидания входящих подключений или подключаться к другому peer-у по адресу. Обмен сообщениями реализован поверх TCP с NDJSON-протоколом, а отображение сообщений включает имя отправителя, дату/время и текст.

Что реализовано

  • Консольный запуск приложения с параметрами имени и адресов подключения/прослушивания.
  • Прямое TCP-соединение между двумя узлами.
  • Кодирование и декодирование сообщений в формате NDJSON.
  • Отправка и приём текстовых сообщений в интерактивном режиме.
  • Форматированный вывод сообщений в консоль.
  • Корректное завершение работы через команду выхода.
  • Базовая обработка ошибок ввода, сети и формата сообщений.

Архитектура

  • Java 21 как основной язык и Maven как система сборки.
  • Слои разделены на CLI, ядро чата, транспорт и протокол.
  • Для базовой версии выбран TCP + NDJSON как простой и отлаживаемый вариант.
  • Документация сведена к двум основным документам:
    • архитектура и требования
    • план тестирования

Тестирование и качество

  • Добавлены unit-тесты для CLI и протокола.
  • Добавлен интеграционный TCP-тест для сценария соединения двух узлов.
  • CI запускает сборку и тесты.
  • В проекте подключены проверки форматирования и статического анализа.

Как проверить

  • Сборка и тесты: mvn -B -ntp verify
  • Запуск: java -jar target/netchat.jar --name --listen host:port
  • Подключение к peer-у: java -jar target/netchat.jar --name --peer host:port

@DimaRus05
DimaRus05 merged commit 60882f3 into main Mar 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants