Задача стримингового сервера создавать сессии по запросу координатора, поддерживать соединение с клиентами в рамках сессии, запускать приложение_ЖК и WebRTC сервер в рамках одной сессии, упраление пользователями (присвоение управления и т.д.), завершение сессии, приложения_ЖК и WebRTC сервера. 1) Сервер сессий имеет файл config.json в котором содержатся данные о (ip, port, допустимое количество сессий и данные для работы WebRTC). 2) Координирующий сервер знает лимит сервера сессий и присылает запрос на создание сесии {"verb":"CREATE_SESSION", "user_id":"id123"}, запускает приложение_ЖК и WebRTC сервер, затем отправляет ответ координатору {"verb":"CONNECT_TO_SESSION", "ip":"0.0.0.1", "port":"1111", "code":"1234"} 3) Затем координатор подключает пользователя к серверу сессий с помощью сокета ("ip":"0.0.0.1", "port":"1111") и присылает запрос {"verb":"CONNECT_USER_TO_SESSION", "code":"1234", "user_id":"id123"}, после чего сервер сессий отправляет 2 запроса первый запрос координатору который говорит о том что пользователь подключился {"msg":"SESSION_CONNECTION_ESTABLISHED", "WebRTC_connection_data":"https://ip:port"} (список данных дополнится), после чего пользователь подключается к стриму (процесс подключения дополнится) 4) Во время соединения пользователи могут обмениваться данными внутри сессии (список данных дополнится) 5) Если все пользователи отключились от сессии то закрывается приложение ЖК, сервер WebRTC и уничтожается сессия Архитектура программы в порядке взаимодействия с клиентом: сессия (класс): публичные: конструктор(максимальное_количетсво_пользователей, обьект_логов(записать), обьект_приложения(запустить, завершить), обьект_WebRTC_сервера(запустить,завершить) ): обьект_приложения.запустить() обьект_WebRTC_сервера.запустить() функции: ~деструктор: обьект_приложения.завершить() обьект_WebRTC_сервера.завершить() ПОДУМАТЬ_НАД_ОБЬЕКТОМ.сообщить_серверу_сессий_что_сессия_завершилась()