WebRTC / audio group call / code

 ( log69 | 2018. október 5., péntek - 21:15 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

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.

Nem terméket akarok csinálni, hanem csak belső használatra saját megoldást. Köszi a szempontokat és infót.

A BigBlueButton v2-ben már van HTML5 alapú kliens, és az WebRTC-t használ. Márpedig ott elvben tudnak többen beszélni. Esetleg meg lehetne nézni azt a megvalósítást.

=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?

https://jitsi.org/

Tud audio only-t is.

Kösz neked meg Zahy-nak, lehetőleg programozható megoldást akartam keresni, amelyhez én tudok kialakítani felületet.

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.

Kösz, csak bonyolultnak tűnik. Lásd lejjebb, a Sip.js sokkal egyszerűbb első ránézésre és ahhoz feltennék valamilyen átjárót, csak azt még nem látom át hogyan működik. Asterisk jó neki? Gondolom ez egy SIP / WebRTC konverzió.

JITSI-nek van saját szerver komponense, van leírásuk a saját deploymentről, mi is saját infrastruktúrán használtuk.

Csak nekem programozható komponens kell. Gyanítom, elemezni egy komplett projektet több munka mint egy eleve erre készített lib-et használni.

Újabb kérdés: megtaláltam a SIP.js lib-et, ez lenne kliens oldalon. Ehhez milyen szerver oldali csomagok kellenek? Gondolom egy VOIP daemon-t kellene telepíteni, amely átjárónak szolgál. Arra példa? Van ezzel kapcsolatban tapasztalata valakinek?

https://sipjs.com

Kösz.

Szerk.: most ezt nézem:

https://sipjs.com/guides/server-configuration/asterisk/

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.

Itt ez a csóka fejleszt (java-s) signaling servert és js klienst is hozzá. Nézz rá esetleg:

https://github.com/mslosarz

Üdv,
Peti

Kösz, megnézem.