В данном разделе описан единственный маршрут, предназначенный для установки WebSocket-соединения.
- Описание: Этот маршрут предоставляет возможность установки WebSocket-соединения для взаимодействия с клиентами.
- Путь:
/{room_id}/{session_id} - Метод: GET
- Параметры:
{room_id}: Уникальный идентификатор комнаты/чата.{session_id}: Уникальный идентификатор сессии/подключения.
- Действие: Маршрут создает новое WebSocket-соединение (
WsConn) и запускает его, используя предоставленные параметры. - Пример использования:
ws://your_server_address/your_room_id/your_session_id
В данном разделе определены различные типы сообщений (Messages), используемые в приложении для обмена информацией между актерами (actors) в рамках фреймворка Actix и работы с WebSocket.
- Описание: Простое текстовое сообщение для передачи через WebSocket.
- Результат:
()(пустой тип).
- Описание: Сообщение, отправляемое при подключении нового пользователя к WebSocket.
- Поля:
addr: Адрес получателя (Recipient) для отправки сообщений.self_id: Уникальный идентификатор пользователя.room_id: Уникальный идентификатор комнаты/чата.
- Результат:
()(пустой тип).
- Описание: Сообщение, отправляемое при отключении пользователя от WebSocket.
- Поля:
self_id: Уникальный идентификатор пользователя.room_id: Уникальный идентификатор комнаты/чата.
- Результат:
()(пустой тип).
- Описание: Сообщение, представляющее аудиофрейм для передачи по сети.
- Поля:
j_type: Тип сообщения (JSON тип).storage_id: Уникальный идентификатор хранилища аудиофайлов.body: Содержание аудиофрейма в виде байтов.part: Номер части аудиофрейма (если файл разделен на части).
- Результат:
()(пустой тип).
- Описание: Сообщение, представляющее видеофрейм для передачи по сети.
- Поля:
j_type: Тип сообщения (JSON тип).storage_id: Уникальный идентификатор хранилища видеофайлов.body: Содержание видеофрейма в виде байтов.part: Номер части видеофрейма (если файл разделен на части).
- Результат:
()(пустой тип).
В данном разделе хранятся медиафайлы, записанные в течение всей сессии. Каждый файл идентифицируется по имени файла, которое соответствует полю self_id в теле запроса Connect.
Данная папка предназначена для хранения аудио- и видеофайлов, записанных в процессе взаимодействия с приложением. Идентификация файлов осуществляется по уникальному идентификатору пользователя (self_id), который указывается в теле запроса Connect при подключении пользователя.
Имя каждого файла включает в себя уникальный идентификатор пользователя (self_id), который гарантирует уникальность файла в рамках всей системы. Например, если пользователь с self_id равным "user1_uuid" записывает аудиофайл, то имя файла будет "user1_uuid.mp3" и он будет доступен для последующего воспроизведения или обработки.
В данном разделе описаны задачи, выполняемые сервером после завершения сессии. Сервер проверяет наличие записанных файлов из mediaStream, и при наличии последних добавляет новое задание (файл) с именем по типу ${self_id}.
После завершения сессии сервер производит проверку наличия записанных медиафайлов, полученных от клиентов через mediaStream. В случае обнаружения таких файлов, сервер добавляет новое задание (файл) в систему с именем, сгенерированным на основе уникального идентификатора пользователя (self_id).
-
Завершение сессии:
- После завершения сессии клиента сервер инициирует проверку наличия записанных медиафайлов.
-
Проверка наличия файлов:
- Сервер проверяет наличие медиафайлов, записанных в течение сессии, в хранилище.
-
Добавление задания:
- При обнаружении файлов сервер добавляет новое задание (файл) в систему для дальнейшей обработки.
- Имя файла генерируется на основе уникального идентификатора пользователя (
self_id). Например, имя файла может быть${self_id}.task.
Для запуска проекта выполните следующие шаги:
-
Установка зависимостей:
cargo build
-
Запуск проекта:
cargo run
Эта команда запустит ваше приложение. Убедитесь, что все зависимости установлены перед запуском.
-
Тестирование:
cargo testПроверьте работоспособность проекта с помощью ваших тестов.
-
Проверка в браузере:
- Откройте ваш веб-браузер и перейдите по адресу http://localhost:your_port, где
your_port- порт, на котором запущено ваше приложение.
- Откройте ваш веб-браузер и перейдите по адресу http://localhost:your_port, где
Убедитесь, что у вас установлен Rust и Cargo перед выполнением этих команд.