[WebRTC pa Android Tutorial] Hvordan bygge en Chat Roulette Clone Bruke Kotlin og TypeScript.

[WebRTC pa Android Tutorial] Hvordan bygge en Chat Roulette Clone Bruke Kotlin og TypeScript.

kan du ringe oss +1.650.542.8993 [email protected]

I dette innlegget skal vi demonstrere hvordan du bygger en enkel, peer-to-peer WebRTC Android-klient fra grunnen av. Vi vil dekke hvordan du implementerer signaleringsbackend ved hjelp av TypeScript og Node og Android-klienten uten a bruke noen tredjeparts service eller abstraksjon over WebRTC-biblioteket.

Lekeprogrammet vi skal bygge er en veldig enkel klone av Chat Roulette, som lar brukerne kommunisere med tilfeldige personer over internett.

Fig 1. Hoyt nivavisning av arkitekturen.

Soknaden vil v re ganske enkel i konseptet. Det vil tillate to brukere a koble til og etablere et WebRTC videocall. Bakgrunnen samsvarer med brukere med hverandre og ruter som signalerer meldinger mellom dem nar en kamp er laget.

Sa, uten videre, la oss komme i gang.

Vi skal bruke TypeScript pa backend, slik at vi kan dra nytte av dens rike type systemkompilere tidstypekontroll.

Vi ma installere TypeScript-kompilatoren, noden for a se filer og ts-node for a kjore TypeScript-kode uten a bekymre deg for kompileringstrinnet:

Etter at det er ferdig, kan vi begynne a tenke pa hvordan vi implementerer var WebSocket-server. For enkelhet skal vi bruke «ws» -pakken og «uuid» -pakken for a generere vilkarlig ids for brukerne vare:

Nar vi bruker TypeScript, er det nodvendig a installere typedefinisjoner for JavaScript-biblioteker:

Deretter legger vi til en «script» -oppforing i var package.json-fil, slik at vi kan lette var utviklingsserver enklere:

Vi dekker bare de viktigste delene av koden pa dette blogginnlegget, men du finner full kildekoden her.

La oss na sette opp en enkel WebSocket-server:

Du vil legge merke til at strukturen er ganske enkel, siden det meste av logikken lever i var Roulette-klasse. La oss ta en titt pa det:

Vi bruker et kart for a holde oversikt over tilkoblede brukere og et sett for a vite hvilke brukere som ikke har blitt matchet enna, dette anbefales ikke i et produksjonsmiljo, men det er tilstrekkelig til demonstrasjonsformal.

En av de mest nyttige aspektene ved bruk av TypeScript er a kunne domenet dype sa noyaktig som mulig, la oss ta meldingen utvekslet med klienten som et eksempel:

ClientMessage-typen er kjent som en «Union Type», som ofte finnes i funksjonelle sprak, som OcaML og Haskell. Dette vil tillate oss a sjekke pa kompileringstid, hvilken type melding det egentlig er, basert pa «type» -egenskapen.

Klientkoden og arkitekturen er litt mer komplisert enn serverens, sa vi skal illustrere det med et diagram:

Fig 2: Android klientarkitektur.

Som nevnt ovenfor utvikler vi klientprogrammet i Kotlin, et relativt nytt sprak som offisielt stottes for Android-utvikling.

For bedre resultater anbefaler vi at du bruker Android Studio 3.0+ og Kotlin 2.1+.

For vi hopper inn i koden, ma vi installere noen avhengigheter til vart nye Android-program, vi kan gjore det ved a legge til.

til var avhengighetsdel, i modulens build.gradle.

Da ma vi deklarere at vi trenger tilgang til kameraet, tillatelse til a ta opp lyd og Internett-tilgang. I var AndroidManifest.xml-fil legger vi til:

Direkte pa & lt; manifest & gt; delen, sa kan vi hoppe inn i koden.

Var hovedaktivitet er en ganske enkel en. Den har en knapp som pakaller videosamtaleaktiviteten nar den er trykket. Vi hopper over den delen, men du kan se kildekoden her.

Deretter ma vi ha en referanse til vare synspunkter pa OnCreate-metoden i VideoCallActivity:

De to forste tingene som skiller seg fra Java er mangelen pa implisitte gjengivelser pa findViewById-anropene, og enkelheten til setOnClickListener-samtalen.

Deretter erkl rer vi en onStatusChanged-metode, som vil bli pakalt nar sesjonens status er, slik at vi kan varsle brukeren:

Vi ma kjore noen kode som pavirker brukergrensesnittet pa runUIThread, nok en gang, koden er ganske enkel fordi det ikke er behov for en anonym klasse, som i Java.

Deretter er det VideoCallSession-klassen, denne klassen har ansvar for a gyte signaleringswebsokkelen og gjore de WebRTC «VVS». Noe som er verdt a nevne om denne klassen, er at koden som bruker WebRTC-objekter som PeerConnection, MediaStream og sa videre, ma utfores pa traden der PeerConnectionFactory opprinnelig ble opprettet (det burde ikke v re brukergrensesnittet), derfor SingleThreadExecutor er opprettet, feltet er statisk, slik at flere samtaler blir utfort pa samme trad. Slik gjor vi det pa Kotlin:

Denne klassekoden er asynkron og hendelsesorientert, noe som gjor det vanskelig a folge, diagrammet nedenfor beskriver strommen av samspill mellom 2 klienter og backend. En bla pil betyr at meldingen ble sendt over signaleringsnettkontakten, mens en gronn pil betyr peer to peer, mest sannsynlig over UDP, trafikk.

Dette er de viktigste hendelsene og hvor de finnes i koden:

Tilkoblet: Dette utloses automatisk ved a koble til baksiden. SDP-tilbud: Dette genereres pa mayCreateOffer-metoden, dette skjer bare hvis backend indikerer at denne klienten skal starte kommunikasjon. ICE-kandidater: Kandidatene sendes pa handteringslocalIceCandidate-metoden, de sendes til backend sa snart de er samlet. SDP-svar: Svaret blir generert i handtaketRemoteDescriptor-metoden, bare hvis samtalen ikke er den som initierte. WebRTC Media: Dette handteres i programmet via MediaStream-objekter i addRemoteStream-metoden. Koble fra: Dette utloses automatisk nar klienten kobles fra baksiden.

Og akkurat slik har vi en innfodt WebRTC-applikasjon som gir full fleksibilitet og fungerer over SDK 16 til 26, det er 100% av stottede enheter!

Vi haper du fant denne oppl ringen bade lett a forsta og nyttig.

Vil du legge den til webRTC-ekspertene?

Skulle du trenge hjelp til a vurdere hva du har bygget, kanskje en ekspert 2 sett med oyne, eller kanskje til og med bygge din soknad ide for deg, gi oss beskjed. Vi vil gjerne hjelpe deg ut.

Undersokelse: Ringer alle WebRTC-utviklere.

I fjor sendte vi ut en undersokelse som ber deg om a dele erfaringer og utfordringer som en webRTC-utvikler og.

Topp 5 tips for a bygge vellykket medisinsk kommunikasjonsprogramvare for telemedisin.

Det er ingen hemmelighet at telemedisin er et verdifullt verktoy for helsepersonell for a oke dekning og forbedre deres.

[Q4 2017 Status] Hva er nytt med WebRTC? Kite Testing Suite & # 038; Mer.

Introduksjon. Hva er nytt med WebRTC? Sent i forrige maned, den 27. oktober, fant Kranky Geek 2017 sted i San.

3 ting WebRTC kan ikke gjore.

Teamet vart mottar alltid interessante samtaler fra kunder og potensielle kunder, som vil vite om deres web.

Hvilken CPaaS Provider Alternative er det beste valget for din soknad? Tokbox, Vidyo, Temasys, Twilio & # 038; Mer.

Mange bedrifter ser na pa a legge til cloud-baserte, CPaaS (Communication Platform As a Service) -funksjoner til sine nettsteder -.

Kurento Recording Solutions Made Simple.

De fleste WebRTC-implementeringer krever noen form for opptak i disse dager, men de er ofte tungvint og implementere dem.

Hurtigguide: Best Free Video Conferencing Tools Foruten Zoom.

Sa du ma raskt lage et videokonferanserom for a snakke med dine kunder eller partnere? Den forste.

Bruke WebRTC-protokollen i NodeJS med PubNub-WebRTC-pakken.

Mens jeg skrev en serie om hvordan jeg styrer et webkamera ved hjelp av en Arduino og WebRTC, snublet jeg over.



Hilsen! Vil du spille i det mest heldige kasinoet? Vi fant det for deg. Klikk her nå!