СДО "EDUS" СДО "EDUS"
100% СДЕЛАНО В РОССИИ

СИСТЕМА ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

Структура проекта

47

Примерная структура проекта выглядит следующим образом:

Image

I — Yii2, отвечает за основной функционал и взаимодействие системы

II — Сервер для работы веб соккетов. Использует nodejs + socket.io/
Отвечает за всю работу, что происходит в режиме реального времени (чат, уведомления, и т.д.).

III — Сервер видео трансляций. Используется openvidu.io/.
Он принимает видеопоток от пользователя и раздаёт другим пользователям. Так же во время трансляции может произвести её запись, которая потом может быть выложена или в облако, или в любое другое место.

IV — Яндекс облако — файловое хранилище. Принцип работы — пользователь закачивает файл в системе. Файл вначале загружается на сервер, и после этого происходит выгрузка в облако

V — Яндекс облако для базы данных. В данный момент не используется.

Пример работы: Пользователь авторизуется на сайте. При этом генерится уникальный токен для этого пользователя, который заносится в базу данных.
При загрузке страницы устанавливается соединение с (II). На (II) передаётся id пользователя и уникальный ключ. В бекенде nodejs обращается к yii на проверку данных — соответствуют ли они токену и id пользователя, от которого идёт запрос. Если всё ок, то устанавливается сокеты открываются. Если нет, то соединение сбрасывается. И если какие то возникают события на сервере (пришло сообщение, уведомление, и т.д.) — то пользователю приходят данные в режиме реального времени.

Пользователь запускает видео трансляцию. Запрос в фоне уходит на (III) — в нём содержится токен для доступа на видео сервер. Если токен проходит проверку, то запускается трансляция и пользователю возвращается линк на эту трансляцию и этот линк уходит на (II). Если кто то присоединяется к трансляции, то ему приходит линк с (II). Т.е. по сути (III) является только ретранслятором. Никаких данных, кроме записи видео, которая потом уйдёт куда то после конвертации, не хранятся.

47
No comments yet. Be the first to add a comment!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.