Поставленная задача:
Спроектируйте и реализуйте мессенджер для получения и обработки сообщений от клиента, а именно:
1. Реализовать сервис, который обрабатывает поступающие запросы от клиентов.
Условия и требования:
- Подключенный клиент добавляется в "общий" чат, где находятся ранее подключенные клиенты;
- После подключения новому клиенту доступные последние N (по умолчанию 20) сообщений из общего чата;
- Повторно подключенный клиент имеет возможность просмотреть все ранее непрочитанные сообщения до момента последнего опроса (как из общего чата, так и приватные);
- По умолчанию сервер стартует на локальном хосте (127.0.0.1) и на 8000 порту (иметь возможность задавать любой);
- Можно не проектировать БД: информацию хранить в памяти и/или десериализовать/сериализировать в файл (формат на выбор) и восстанавливать при старте сервера;
2. Реализовать приложение, который умеет подключаться к серверу и обмениваться сообщениями.
Условия и требования:
- После подключения клиент может отправлять сообщения в "общий" чат;
- Возможность отправки сообщения в приватном чате (1-to-1) любому участнику из общего чата;
- Разрабатывать UI не надо: можно выводить информацию в консоль или использовать лог-файлы;
3. Дополнительные требования:
- Клиент может отправлять не более 20 (по умолчанию) сообщений в общий чат в течение определенного периода - 1 час (по умолчанию). В конце каждого периода лимит обнуляется;
- Возможность создавать сообщения с заранее указанным временем отправки; созданные, но неотправленные сообщения можно отменить;
- Возможность пожаловаться на пользователя. При достижении лимита в 3 предупреждения, пользователь становится "забанен" - невозможность отправки сообщений в течение 4 часов (по умолчанию);
-
склонируйте репозиторий;
-
находясь в папке с кодом создайте виртуальное окружение
python -m venv venv
; -
активируйте виртуальное окружение (Windows:
source venv\scripts\activate
; Linux/Mac:source venv/bin/activate
); -
установите зависимости
python -m pip install -r requirements.txt
.
- Запустить сервер в server.py
- Создать соединение клиента с сервером client.py
- Набор доступных пользователю команд:
/nickname <your nickname>
- ввести никнейм пользователя;/complaint <nickname>
- пожаловаться на другого пользователя;/priv <nickname> <message>
- отправить приватное сообщение пользователю;/delay <minutes> <message>
- отложить отправку сообщения на указанное количество минут;quit
- выход из чата.
Ирина Фок iricshkin