



Распределенный чат -мессенджер, который использует сети Bluetooth Le Mesh.
Проект состоит из следующих компонентов:
DistributedChatKit : абстрактное приложение, независимое от платформы, независимое от транспорта (использует интерфейс для вещания/получения сообщений)DistributedChatBluetooth : абстракция по сравнению с платформой Bluetooth LE TransportsDistributedChatApp : реализация iOS/macOS, использует Bluetooth LE в качестве транспорта, не требует сервераDistributedChatCLI : реализация CLI использует либо HTTP/WebSockets в качестве транспорта с сервером моделирования или Bluetooth LE (WIP)DistributedChatSimulationProtocol : протокол на основе JSON на высоком уровне, используемый между CLI и Simulation ServerDistributedChatSimulationServer : Companion Server для CLI, передает сообщения между подключенными узлами CLI, предоставляет веб-интерфейс для настройки ссылок между узламиScripts : сценарии для удобного запуска экземпляров CLI и для проверки транспорта BLEГрафик зависимости между этими пакетами выглядит так:
%% {init: {"flowchart": {"defaultrenderer": "elk"}}} %%
Блок -схема Bt
Подграф-кроссплатформный
DistributedChatbluetooth -> DistributedChatkit
DistributedChatcli -> DistributedChatkit
DistributedChatcli -> DiviubtedChatbluetooth
DistributedChatCli -> DistributedChatsImulationProtocol
DistributedChatsImationServer -> DistributedChatsImulationProtocol
конец
Подграф "Apple Platforms"
DistributedChatapp -> DistributedChatkit
DistributedChatapp -> DistributedChatbluetooth
конец
Во -первых, убедитесь, что установили Swift 5.10+ или более новые. Последние версии для Ubuntu и MacOS можно найти здесь.
Чтобы запустить сервер моделирования, перейдите в каталог DistributedChatSimulationServer и выполните:
swift run Веб -интерфейс теперь должен быть доступен по адресу http://localhost:8080 .
Чтобы запустить один экземпляр CLI, убедитесь, что сервер моделирования работает, перейдите в DistributedChatCLI и выполните:
swift run distributed-chat --name AliceВы можете заменить любое имя для Алисы. Как только CLI начался, выбранное имя должно отображаться как узел в веб -интерфейсе сервера симуляции.
Для удобства существует сценарий для запуска нескольких экземпляров CLI вместе в одном сеансе tmux . Чтобы использовать его, перейдите в корневой каталог этого хранилища и запустите
Scripts/start_clis Alice Bob Charles Dave ... или как много клиентов, которых вы хотите начать. Чтобы остановить всех клиентов одновременно, нажмите Ctrl + B , затем введите :kill-session и нажмите Enter.
Создание и запуск приложения для iOS возможно только на MacOS, поэтому убедитесь, что имейте следующее:
Откройте подкаталог DistributedChatApp в XCode и создайте/запустите проект.