WebRTC alapú csevegő alkalmazás, hang és videó támogatással

OData támogatás
Konzulens:
Jánoky László Viktor
Automatizálási és Alkalmazott Informatikai Tanszék

A webes technológiák fejlődésével párhuzamosan egyre több funkciót támogatnak a böngészők is. Ezek közé tartozik a WebRTC, ami peer-to-peer hálózatok kialakítását teszi lehetővé az egyes kliensek között. De mi is az a WebRTC? Az RTC mozaikszó feloldása a Real Time Communication – azaz valós idejű kommunikáció. A WebRTC tehát egy olyan megoldás, ami böngészők között valós idejű kommunikációt tesz lehetővé . Korábban is láthattunk hasonló megoldásokat a VOIP, vagy akár a Skype saját protokollja révén, ám a WebRTC ezeken túlmutat. Feladatom, hogy bemutassam a technológiát, illetve annak lehetőségeit egy példa alkalmazáson keresztül.

A WebRTC nem csak mint protokoll komplex, de a böngésző API-jának szintjén is jóval több fejlesztői erőfeszítést követel meg, ellenben az eddigi böngésző API-kkal, melyeket sokkal egyszerűbb volt használni. Ilyen például a Websocket, ami bár gazdag funkcionalitással rendelkezik, mégis egyszerű a használata. Emiatt az első feladatom az volt, hogy készítsek egy proof-of-concept alkalmazást, ahol szerverek nélkül fel lehet építeni kapcsolatot két gép között. Ehhez egy egyszerűbb könyvtárat is kellett írnom a WebRTC API köré. Ennél a demónál a kapcsolat felvételéhez szükséges információk manuálisan kerültek kicserélésre. Miután ezt sikerült elérnem, áttértem a fő feladatomra, egy Skype jellegű alkalmazásra, ahol több ember beszélgethet egymással anélkül, hogy bármilyen szerveren a kliensek adatai megfordulnának. Ehhez már egy signaling szerver is kellett, ami a kapcsolat leíró adat cseréjét végzi. Ahhoz, hogy a NAT mögötti gépek is kapcsolódni tudjanak egymáshoz, STUN és/vagy TURN szerverre volt szükség, így ezeknek a használatát, illetve azok host-olását is meg kellett oldanom.

A több kliens közötti kommunikáció felvet további problémákat is. Ha N ember szeretne egymással beszélni, az egy böngészőre vetítve 2(N-1) darab stream kezelésével jár, ami túl nagy mennyiségű adat mozgását jelent 3-nál nagyobb létszám esetén. Emiatt médiaszervereket kell alkalmazni, amik ezt a számot csökkentik kompromisszumok árán.

Mint látható, egy WebRTC szolgáltatás létrehozása nagyon sok szinten kíván elmélyült tudást, főleg azért, mert akár 5 különböző szervernek is részt kell vennie, hogy gondtalanul működjön a szolgáltatás. Dolgozatom célja az volt, hogy ezt az ismeretet elsajátítsam és felhasználhassam egy alkalmazás elkészítéséhez.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.