Files
olcrtc/docs/uri.md
2026-05-06 19:23:16 +03:00

3.9 KiB
Raw Blame History

Краткий URI-формат для клиентов

Этот документ описывает соглашение для разработчиков клиентских приложений, которым нужен компактный способ передавать параметры подключения olcrtc.

Текущий olcrtc не парсит такой URI автоматически. Если клиентское приложение хочет использовать эту запись, оно должно само разобрать строку и передать полученные поля в свои вызовы olcrtc.


Формат

olcrtc://<Carrier>?<Transport>@<RoomID>#<EncryptionKey>%<ClientID>$<MIMO>

Все поля после olcrtc:// считаются частью клиентского соглашения.


Поля

Поле Значение
<Carrier> Имя carrier/provider, например telemost, jazz, wbstream
<Transport> Имя транспорта, например datachannel, vp8channel, seichannel, videochannel
<RoomID> Идентификатор комнаты или carrier-specific room URL/ID
<EncryptionKey> Ключ шифрования в hex, обычно 64 символа (32 байта)
<ClientID> Идентификатор клиента. Должен совпадать с ожидаемым значением на сервере
<MIMO> Свободный комментарий для UI/метаданных, например RU / olc free sub / IPv6

Соответствие параметрам olcrtc

URI-поля сопоставляются с обычными параметрами так:

URI поле Параметр / значение
<Carrier> -carrier
<Transport> -transport
<RoomID> -id
<EncryptionKey> -key
<ClientID> -client-id
<MIMO> В olcrtc не передаётся. Это только клиентский комментарий

-link direct и -data data в этом формате не кодируются, потому что для текущих сценариев они фиксированные.


Разделители

Строка использует фиксированные разделители:

Разделитель После него идёт
:// начало полезной нагрузки после схемы olcrtc
? <Transport>
@ <RoomID>
# <EncryptionKey>
% <ClientID>
$ <MIMO>

Рекомендуется не использовать эти символы внутри самих полей. Если клиенту это нужно, он должен ввести собственное escaping/percent-encoding правило и применять его симметрично при кодировании и декодировании.


Примеры

Полный пример

olcrtc://wbstream?seichannel@room-01#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799%android-01$RU / olc free sub / IPv6

Разбор:

Поле Значение
Carrier wbstream
Transport seichannel
RoomID room-01
EncryptionKey d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799
ClientID android-01
MIMO RU / olc free sub / IPv6

Эквивалент CLI

./olcrtc -mode cnc \
  -carrier wbstream \
  -transport seichannel \
  -id room-01 \
  -client-id android-01 \
  -key d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799 \
  -link direct \
  -data data

Короткие алиасы

Как хотите но лично я был бы против.