Задача координирующего сервера создать сессию для клиента или связать клиента с сессией, запланировать сессию,
координирующий сервер знает все активные сессии и список серверов сессий с помощью файла конфига servers.json (обновляет раз в N секунд)
и постоянного соединения с серверами:

1) имеет 2 файла конфига servers.json и configuration.json
	a) "servers.json" содержит список серверов "массив верхнего уровня": и их название, адрес, описание вида
	
	{
		"server_name1":"SomeName1", 
		"ip":"0.0.0.0", "port":"111", 
		"info":{
			"deskription":[
				{"en":"best RC and ..."}, 
				{"ru":"луший ЖК и"}
		]}
	}
	
	b) "configuration.json" содержит конфигурацию координатора 
	{"ip":"0.0.0.2", "port":"333", "time_between_updates_seconds":"30"}

2) Подключаемся к координатору с помощью websocket и SSL, 
	a) при подключении к координатору пользователь получает уникальный id
	{"verb":"GET_TITLES", "range":"X-Y"} (range это сервера с X до Y, например с 0-20 или 20-213, количество серверов = Y - X + 1)
	a) в случае успеха получаем {"msg":"SERVERS_FOUND", "servers":"{данные из примера "1)a)" }"}
	b) в случае неудачи получаем {"msg":"SERVERS_NOT_FOUND"}

3) Пользователь планирует сессию с помощью запроса {"verb":"PLAN_SESSION", "rc_name":"SomeRC", "date":"day/month/year", "time":"00:00"}
		a) в браузере доступен выбор только того времени которое не занято
		b) координатор сохраняет сессию в список запланированных сессий, файл формата JSON, sessions_planned.json 
	и выдаёт четырёхзначный код с помощью которого можно будет подключиться к сессии в назначенное время {"msg":"CONNECTION_CODE", "code":"1234"}

4) Если пользователь хочет создать сессию без планирования то посылает запрос {"verb":"CREATE_SESSION", "rc_name":"SomeRC"}, 
	координатор создаёт сессию на свободном сервере и возвращает {"verb":"CONNECT_TO_SESSION", "ip":"0.0.0.1", "port":"1111", "code":"1234"}, 
	если все сервера заняты вернёт {"msg":"SERVERS_BUSY"}, когда координатор получает запрос "CREATE_SESSION":
		a) координатор проверяет список планирования чтобы убедиться что на данное время нет активных записей, затем свободному серверу сессий 
		отправляет запрос на создание сессии {"verb":"CREATE_SESSION", "rc_name":"SomeRC", "user_id":"id123"}, 
		если создать сессию можно, сервер сессий вернёт {"verb":"CONNECT_TO_SESSION", "ip":"0.0.0.1", "port":"1111", "code":"1234"}
		b) когда клиент получил данные для подключения к сессии он устанавливает соединение с сервером сессий с помощью сокета
		и разрывает соединение с координатором (может быть не стоит разрывать соединение с координатором)

5) Если пользователь хочет подключиться к сессии с помощью кода то посылает запрос 
	{"verb":"CONNECT_SESSION_WITH_CODE", "code":"1234"}, 
	в ответ придёт {"verb":"CONNECT_TO_SESSION", "ip":"0.0.0.1", "port":"1111", "code":"1234"}, или 
	если сессии не существует {"msg":"SESSION_NOT_EXIST"}.


COMMANDS:
{"verb":"GET_TITLES", "start":0, "count":50}
{"verb":"PLAN_SESSION", "title":"SomeRC", "year":2022, "month":11, "day":4, "hour":20, "minute":13, "period_minute":30}

{
	"title":"SomeRC", 
	"data":[
	{
		"ip":"127.0.0.1",
		"port":"0000",
		"copies":5
	},
	{
		"ip":"127.0.0.2",
		"port":"0001",
		"copies":2
	}
]}

{"verb":"CREATE_SESSION", "title":"SomeRC"}