← Cloudflare Realtime / realtime / sfu
Connection API
Cloudflare Realtime zjednodušuje správu peer-to-peer spojení a mediálních stop prostřednictvím koncových bodů HTTPS API. Tyto koncové body umožňují vývojářům efektivně spravovat relace, přidávat nebo odebírat stopy a získávat informace o relaci.
Endpointy API
- Vytvoření nové Session: Vytvoří novou relaci ve službě Cloudflare Realtime, kterou lze dále upravovat pomocí dalších endpointů níže.
POST /apps/{appId}/sessions/new
- Přidejte nový track: Přidá mediální track (zvukový nebo obrazový) do existující relace.
POST /apps/{appId}/sessions/{sessionId}/tracks/new
- Aktualizace tracků: Mění tracky pomocí opětovného využití existujících transceiverů.
PUT /apps/{appId}/sessions/{sessionId}/tracks/update
- Znovu vyjednat Session: Aktualizuje vyjednávací stav relace tak, aby zohledňoval nové tracky nebo změny v těch stávajících.
PUT /apps/{appId}/sessions/{sessionId}/renegotiate
- Zavření Tracku: Odebere zadanou stopu z relace.
PUT /apps/{appId}/sessions/{sessionId}/tracks/close
- Navázání přenosu DataChannel: Stahuje
server-eventskanál pro navázání přenosu DataChannel. Zavolejte toto ještě předtím, než přidáte DataChannels.POST /apps/{appId}/sessions/{sessionId}/datachannels/establish
- Add DataChannels: Publikuje lokální DataChannel nebo stahuje vzdálený (volitelně
waitForAck,canReply).POST /apps/{appId}/sessions/{sessionId}/datachannels/new
- Aktualizace DataChannels: Uděluje nebo odebírá příznaky na již staženém vzdáleném DataChannel (například
canReply).PUT /apps/{appId}/sessions/{sessionId}/datachannels/update
- Zavření DataChannels: Odebere zadaný DataChannel z relace.
PUT /apps/{appId}/sessions/{sessionId}/datachannels/close
- Načíst informace o Session: Načte podrobné informace o konkrétní relaci.
GET /apps/{appId}/sessions/{sessionId}
Zobrazit úplné API a schéma (formát OpenAPI)
Práce s tajnými klíči
Je zásadní bezpečně spravovat App ID a jeho secret. Track ID a session ID sice mohou být veřejné, přesto by měly být chráněny před zneužitím. Pokud váš backendový server řádně neověřuje původ požadavků, může útočník tato ID zneužít k narušení služby, například odesláním požadavků na uzavření tracků v cizích sessions. Zajištění bezpečnosti a pravosti požadavků na váš backendový server je klíčové pro zachování integrity vaší aplikace.
Používání serverů STUN a TURN
Cloudflare Realtime je navržen tak, aby ve většině scénářů efektivně fungoval bez nutnosti TURN serverů, protože Cloudflare pro Realtime vystavuje veřejně směrovatelnou IP adresu. Integrace STUN serveru však může být potřebná pro usnadnění vzájemného vyhledávání a připojování peerů.
- Cloudflare STUN Server:
stun.cloudflare.com:3478
Využití STUN serveru Cloudflare může pomoci procesu navazování spojení v aplikacích Realtime.
Životní cyklus jednoduché relace
Tato část poskytuje přehled typického životního cyklu jednoduché relace se zaměřením na aplikace pouze pro zvuk. Ukazuje, jak backendový server informuje klienty o připojení nebo odchodu nových vzdálených klientů. Zapojení videa by do relace přineslo další tracky a další aspekty, se kterými je třeba počítat.
sequenceDiagram
participant WA as WebRTC Agent
participant BS as Backend Server
participant CA as Realtime API
Note over BS: Client Joins
WA->>BS: Request
BS->>CA: POST /sessions/new
CA->>BS: newSessionResponse
BS->>WA: Response
WA->>BS: Request
BS->>CA: POST /sessions/<ID>/tracks/new (Offer)
CA->>BS: newTracksResponse (Answer)
BS->>WA: Response
WA-->>CA: ICE Connectivity Check
Note over WA: iceconnectionstatechange (connected)
WA-->>CA: DTLS Handshake
Note over WA: connectionstatechange (connected)
WA<<->>CA: *Media Flow*
Note over BS: Remote Client Joins
WA->>BS: Request
BS->>CA: POST /sessions/<ID>/tracks/new
CA->>BS: newTracksResponse (Offer)
BS->>WA: Response
WA->>BS: Request
BS->>CA: PUT /sessions/<ID>/renegotiate (Answer)
CA->>BS: OK
BS->>WA: Response
Note over BS: Remote Client Leaves
WA->>BS: Request
BS->>CA: PUT /sessions/<ID>/tracks/close
CA->>BS: closeTracksResponse
BS->>WA: Response
Note over BS: Client Leaves
WA->>BS: Request
BS->>CA: PUT /sessions/<ID>/tracks/close
CA->>BS: closeTracksResponse
BS->>WA: Response