Это демонстрационная проект, который ставит своей целью закрепление знаний Java по созданию клиент-серверного приложения с GUI.
В проекте присутсвуют обе части чата:
-
Серверная часть. Поднимается только на localhost на порту 8189. Не имеет никакого GUI. Её просто нужно запустить первой (перед подключением клиентов).
Внутри есть класс для проверки авторизации BaseAuthService, в который захардкожены несколько логинов для подключения клиентов. В рамках данного проекта работа с базой данных не предусматривалось, а потом было решено сделать так. Пры логин-пароль для авторизации: login1 и pass1, login2 и pass2, login3 и pass3.
-
Клиентская часть. Используется для подключения к серверу на localhost на порту 8189. GUI написан на JavaFX.
Первое, что отображается при запуске клиента – это окно авторизации (первая вьюшка), где нужно вбить одну из пар логин-пароль упомянутую выше. После этого становится доступным основной интерфейс чата (вторая вьюшка) со следующими фичами:
- Можно авторизоваться под существующим пользователем или зарегестрироваться с нуля, при этом автоматически произойдёт и авторизация.
- Можно отправлять сообщение одновременно всем.
- Можно отправлять личный сообщения вида /w <nick> <message>, например, /w nick2 Привет!.
- Можно выйти из чата написав /end или нажав кнопку Выйти. При этом попадаешь обратно в окно авторизации.
- Можно удалить свой аккаунт, если нажать кнопку Удалиться или вписать команду /delete. При этом попадаешь обратно в окно авторизации.
- Есть поле со списком участников чата находящихся online.
Чат далеко не идиален и его можно долго ещё допиливать:
- Отрефакторить код улучшив его структуру и организацию файлов.
- Добавить специальный класс для работы с сообщениями, чтобы не кидать в сокет просто строки, парсинг которые происходит по факту разбора.
- Улучшить внешний вид, сделав все иконки и закосив под нормальный клиент, чтобы хоть немного избавиться от jav'овости приложения.
- И т.д.
Но так или иначе, как бы мне не было стыдно за этот "проект", свою задачу приложение выполнело: с JavaFX работать научился и простое клиент-серверное приложение писать научился.