2025-01-20.14-27-32.mp4
На данный момент мессенджер реализован на связке WPF+SignalR Core+ASP.NET Core.
На первом этапе работы был выбран фреймворк WCF, позже он был заменён на SignalR.
Выпущена первая рабочая версия SignalR сервера, на ней отсутствуют проблемы которые были на WCF.
Проблемы WCF
- При проверке в глобальной сети столкнулись с серьезными проблемами тайм-аута(когда вы хотите использовать дуплексный сервис в течение длительного времени). Нам пришлось периодически совершать сервисные вызовы, чтобы поддерживать клиентские соединения
- Нет автоматической обработки разрыва соединений, приходиться при каждом обратном вызове отлавливать ошибки через try catch{ } и удалять клиентов с которыми потеряно соединение (на котором выдало исключение)
- Сложная интеграция с клиентом т.к. VS 2022 не поддерживает нормальную генерацию proxy(прокси), а использовать SVCutil затратно по времени
Серверная часть чата реализована на ASP.NET Core SignalR
Задачи которые реализованы Сервером чата(SignalRServer):
- Текстовый групповой чат
- Голосовой чат(стабильная работа более чем с 2-мя пользователями)
- Создание комнат(групп) для общения
- Автоматическое удаление пустых групп при отключении пользователей
- Автоматическое удаление из групп при отключении
- Контроль имён пользователей(уникальность имён)
- Валидация JWT
Задачи которые реализованы Сервером Авторизации(ServerAuthorization):
- Генерация JWT
- Шифрование JWT токена с помощью RSA256
- Регистрация пользователей
- Получения списка серверов и информации о них
Подробнее про авторизацию
Пароль при передаче шифруются однонаправленным алгоритмом SHA-1, целостность передачи важных данных гарантирует Json Web Token. Json Web Token зашифрован с помощью алгоритма SHA-256
Используемая JWT конструкция
В полезной нагрузке расположена информация об имени пользователя,его роли, времени действия токена.
1.Установить клиент - LiteCall.exe
2.Запустить сервера - LC-servers.exe (\LT-servers\LiteCallServer\LC-servers.exe)
3.IP для подключения по стандарту будет localhost:43891
- Невозможность подключения больше чем 2 человек в голосовой чат [03.06.22 исправлено]
- Отсутствие нормального отключения пользователя от сервера [11.03.22 исправлено]
- Отсутствие нормальной валидации [10.03.22 исправлено]
Клиентская часть:
Серверная часть: