Case

Кейс от Сбера

Клиент-серверное консольное приложение «Многопользовательский Чат».

Описание задачи:

1. Реализовать сервер, который:
· регистрирует пользователя;
· передает список on-line пользователей клиенту и поддерживает его в активном состоянии;
· фиксирует время передаваемых сообщений, ведет log журнал.
· мониторит статус пользователей
2. Реализовать клиент, который:
· отправляет запрос об регистрации пользователя на сервер;
· получает список on-line пользователей с сервера и обновляет его в реальном времени;
· передает и отправляет сообщение другому клиенту
3. Рекомендации по реализации:
· Использовать Java Socket для реализации сетевого взаимодействия.
· Для хранения данных, в том числе о пользователях и истории сообщений, на сервере использовать любую in memory БД, например H2.
· Доступ к БД осуществлять через JDBC (по желанию ORM).
· На клиентской части разделить между разными потоками задачи мониторинга входящих сообщений, мониторинга списка online пользователей, отправки сообщений
· На серверной части разделить между потоками обработку событий от каждого пользователя (вход/выход/отправка сообщений)