WebRTC / audio group call / code

Fórumok

Sziasztok,

Elég komplikáltra sikerült a WebRTC API mások elmondása alapján is szerte a neten. Kezdve ott hogy nem működnek a WebRTC-s hivatalos példaprogramok. Sok open JS kód van szerte a neten, de sehol semmi nem működik ami open vagy nem elég jól.

https://webrtc.github.io/samples/

Sima csoportos audio hívásra keresek kódot. Videó semmiképpen nem kell.

Tudnátok linket adni 2018-ban működő kódra? Minél kiheréltebb és egyszerűbb lenne jó. Kicsit furcsának találom hogy 2015-ösek a bejegyzések a github-on és a példák sem jók. Mintha megcsinálták volna a szabványt, aztán rájöttek volna hogy egy milyen fizetős piacot törnek le ezzel, és aztán eltűnt volna a támogatások nagy része. Aki meg összekalapálta nagy nehezen az API hívásokat, az meg zárt saját szolgáltatást csinál belőle (talky.io meg sok másik akik API-t adnak stb).

Létezik vajon egy működő szimpla audio call JS példa kód ehhez a nyílt szabványhoz?

Köszi.

Hozzászólások

Igazából az API szerintem nem bonyolult, viszont az implementációi elég nyomorultak lettek.

A rossz hír, hogy csoportos hívást alapból szerintem még mindig nem tud (nekem ez fájdalmas volt a korábbi flash-es megoldásunkhoz képest, mert az tudott), a jó hír, hogy ha nincs túl sok végpontod, akkor a mesh topológia is tök jó lehet, főleg, ha csak audiot szeretnél. Nekem 5 juzerrel kiválóan ment videóval, hanggal, vacak hálózaton is.

Up to date linket sajnos nem tudok, aminek nem utolsó sorban az az oka, hogy nagyon gyakran változtatgatják az implementációkat, én firefox-chrome vegyes hálókban dolgoztam vele, és valamelyik vége rendszeresen eltört. Általában meg lehet reszelni, de jellemzően nem szépek a megoldások. Pl. áprilisban még úgy működött, hogy bár nincs dokumentálva, ha valaki offert küldött először, akkor utána már csak offert küldhet a későbbiekben is, a gyakorlatban meg úgy történik, hogy ha a hívott vége onNegotiationNeeded miatt újra egyezkedni kezd, akkor answer után akar offert küldeni, ilyenkor én elkaptam a küldött session descriptort és kézzel lecserélgettem benne a típust a megfelelőre.

Szóval ha mindenképp ilyen "mozgó" fázisában akarsz terméket csinálni belőle, akkor arra valószínűleg számítanod kell, hogy
- nem tudsz multicallt csinálni, csak ha egyesével végighívsz mindenkit mindenkivel (ez változhatott, de szerintem nem tette meg)
- nem úgy működik, ahogy le van írva (ezzel már találkoztál)
- meg kell csinálnod egy csomó verzióra (vagy rögzítened kell, hogy mit használjon mindenki)
- ha megcsináltad valahogy, akkor az a következő héten, legkésőbb hónapban eltörik

Szívás. Viszont izgalmas és nagyon klassz cucc, ha szeretsz barkácsolni. :-)

Tudom, hogy ezzel nem segítettem sokat technikailag, de talán virtuális biztató hátbaveregetésnek jó...

Update: ja és még valami. Azt, hogy egyszerűen összerakható, azt csak magára a js kliensekre értettem, az egész infrát összerakni alá szívás. Kell saját stun és turn szerver, az sem triviális, kell egy signaling server, aki koordinál, ráadásul csak https-en tud menni az egész, de self signed nem jó, igazi kell, és nem lehet kevert sem, tehát a signalingnak is tls-ítve kell mennie... macerás, no.

Elvileg ez egy open source cucc, ami testreszabható (mi pár éve csináltunk vele egy Mattermost integrációs prototípust, de nem volt akkor szabad erőforrás befejezni). Akkoriban a Safari igényelt egy plugint, ami viszont nem volt open-source (azóta nem néztük), Chrome és Firefox ment vele gond nélkül.

Ezzel nincs tapasztalatotok?

https://sipjs.com/guides/full-demo-app/

Hogyan kellene beállítani 2 vagy több távoli klienshez? Gondolom kell szerver oldal, de nem világos hogy ez most 3rd party átjárót használ-e, vagy csak böngészőn belüli kliens oldali demo.