Асинхронный чат с клиентской и серверной частью, которые общаются по WebSocket
Общение в реальном времени по сети
- Авторизация и регистрация
- Создание чатов
- Система инвайт-кодов
- Вход в существующие чаты по инвайт-кодам
- Отправка и получение сообщений в реальном времени
Клиентская и серверная части написаны на классах. Для общения между сервисами на бекенде используется асинхронная библиотека websockets
, а на фронтенде класс QtWebSockets
.
Хранение данных происходит в базе данных SQLite. Есть система регистрации с проверкой правильности ввода пароля. Все пароли, хранящиеся в базе данных, хешируются алгоритмом sha256
с добавлением криптографической соли.
Когда приходит новое сообщение, бекенд рассылает уведомление всем пользователям в чате. Если связь с бекендом пропадает, то на фронтенде есть обработчики, которые направляют пользователя на экран повторной авторизации.
Также на фронтенде есть возможность поменять адрес сервера. Это позволяет подключаться не только к серверу в локальной сети, но и к внешним серверам, в том числе по wss
протоколу
- Python 3.8
- PyQT 5
- WebSockets
- SQLite
- AsyncIO
- Скачайте зависимости
pip3 install requirements.txt
- Запустите
server/run.py
- Запустите
client/run_client.py