Files

37 lines
3.2 KiB
Plaintext

Задача стримингового сервера создавать сессии по запросу координатора, поддерживать соединение с клиентами в рамках сессии,
запускать приложение_ЖК и 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_сервера.завершить()
ПОДУМАТЬ_НАД_ОБЬЕКТОМ.сообщить_серверу_сессий_что_сессия_завершилась()