Как стать автором
Обновить

Настройка клиента LiveKit (Flutter + Docker)

Уровень сложностиПростой
 Фото статьи с канала Антихрупкость разработчика
Фото статьи с канала Антихрупкость разработчика

В этом руководстве предполагается, что Flutter уже установлен на вашей рабочей машине. Если это не так, вы можете установить его, перейдя по ссылке: Download Flutter for Linux. В данном примере используется Flutter версии 3.22.2.

Установка клиента LiveKit

Сначала нужно установить клиент для LiveKit. Создайте рабочую директорию командой:

$ mkdir livekit

Затем перейдите в эту директорию и клонируйте клиент с GitHub:

$ cd livekit
$ git clone https://github.com/livekit/client-sdk-flutter

Перейдите в папку с примером, установите необходимые плагины и пакеты, а затем создайте APK-файл:

$ cd client-sdk-flutter
$ cd example
$ flutter pub get
$ flutter build apk --release

APK-файл будет находиться по пути:

example -> build -> app -> outputs -> flutter-apk -> app-release.apk

Установите клиент на мобильное устройство, предоставив все необходимые разрешения. Если установка прошла успешно, на экране появится главный экран клиента.

Настройка сервера (Docker)

На этом этапе нужно настроить сервер, который будет управлять подключением устройств и созданием комнат для конференций. Начните с установки Docker:

$ sudo snap install docker

Для проверки установки Docker:

$ docker version

Если всё установлено успешно, перейдите к следующему шагу. Скачайте Docker-образ LiveKit:

$ docker pull livekit/livekit-server

Перейдите в папку, куда был клонирован клиент, создайте директорию livekitdocker и перейдите в неё:

$ mkdir livekitdocker
$ cd livekitdocker

В этой директории создайте конфигурационный файл livekit.yaml:

$ docker run --rm -v $PWD:/output livekit/generate --local

Для доступа к серверу из внешней сети, измените значение use_external_ip на true в файле livekit.yaml с помощью nano, vim или другого редактора. Также выпишите ключи из параметра keys для использования в Python-скрипте.

Запустите сервер, указав ваш IP:

$ ifconfig
$ docker run --rm -p 7880:7880 -p 7881:7881 -p 7882:7882/udp -v $PWD/livekit.yaml:/livekit.yaml livekit/livekit-server --config /livekit.yaml --node-ip=192.168.3.5

Создание Python-скрипта для генерации токена

Если Python ещё не установлен, установите его:

$ sudo apt-get update && sudo apt-get install python3

В папке livekitdocker создайте файл скрипта:

$ touch tokengenerator.py

Откройте файл и добавьте следующий код:

import jwt
import time

def generate_access_token(api_key, api_secret, user_name, room_name):
    payload = {
        "iss": api_key,
        "nbf": int(time.time()),
        "exp": int(time.time()) + 3600,  # Токен действителен в течение часа
        "sub": user_name,
        "video": {
            "room": room_name,
            "roomJoin": True
        }
    }

    token = jwt.encode(payload, api_secret, algorithm="HS256")
    return token

user_name = input("Введите имя гостя: ")
room_name = input("Введите название комнаты: ")

api_key = "ЗАМЕНИТЕ ЭТОТ ТЕКСТ НА ВАШЕ ЗНАЧЕНИЕ"
api_secret = "ЗАМЕНИТЕ ЭТОТ ТЕКСТ НА ВАШЕ ЗНАЧЕНИЕ"

token = generate_access_token(api_key, api_secret, user_name, room_name)
print("Токен для пользователя " + user_name + ":\n" + token)

Замените api_key и api_secret на значения из файла livekit.yaml, сохраните файл и запустите скрипт:

$ python3 tokengenerator.py

Введите имя пользователя и название комнаты. Сгенерированный токен передайте в клиентское приложение. Для каждого пользователя создайте уникальный токен.

Подключение к серверу через клиентское приложение

Введите URL сервера в формате http://IP:PORT, где IP — это ваш IP, а порт — 7880 или другой, указанный в конфигурации. В поле Token введите токен из предыдущего шага, установите флажки как на примере и нажмите Connect, а затем Join. Поздравляю, вы успешно справились с заданием.

Спасибо за внимание, также подписывайтесь на мой телеграмм канал : Антихрупкость разработчика. Там я рассказываю о IT, жизни и проектах.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.