WebRTC okiem iOS developera – AnyMind blog

WebRTC okiem iOS developera

0 Komentarzy
13 listopada 2018

Autorem wpisu jest Grzegorz Przybyła, iOS Team Leader w AnyMind.

WebRTC oczami iOS developera

To pierwszy z serii trzech artykułów o WebRTC, którymi chcę się z Tobą podzielić. Przedstawię Ci teoretyczny zarys, czym jest WebRTC, a czym nie jest. Wytłumaczę, jak to działa. Dowiesz się też, co sprawiło, że w AnyMind postawiliśmy właśnie na tę technologię.

 

Co to jest WebRTC?

Według Wikipedii,

WebRTC (Web Real-Time Communication) to darmowy projekt open source, który umożliwia przeglądarkom internetowym oraz aplikacjom mobilnym komunikację w czasie rzeczywistym (RTC) poprzez proste interfejsy programowania aplikacji (API)”.

 

Zacznijmy od WHY, czyli dlaczego?

Dlaczego warto używać WebRTC? Bo jest bezpieczne!

WebRTC to narzędzie, które pozwala stworzyć połączenie peer-to-peer. Co to oznacza? Połączenie peer-to-peer nie może być „zhakowane”, bo hakerzy nie mogą przeprowadzać ataków Man-in-the-Middle na już istniejących połączeniach. Co więcej, rządy i korporacje nie mogą zapisywać i przechowywać danych przesyłanych przez WebRTC.

Jak to działa? O tym za chwilę.

 

WebRTC to NIE…

Czasem WebRTC jest błędnie rozumiany. Żeby upewnić się, że dobrze się rozumiemy — zacznę od wyjaśnienia, czym WebRTC nie jest.

WebRTC to nie jest gotowe rozwiązanie.
Użycie WebRTC zależy od konkretnego przypadku, musisz więc być świadomy, że to nie gotowe rozwiązanie, a raczej narzędzie, które pomoże to rozwiązanie stworzyć.

WebRTC to NIE jest WebSocket.
WebSocket dostarcza dwukierunkowy kanał komunikacji (full duplex) poprzez połączenie TCP. To rozwiązanie dobrze udokumentowane i ustandaryzowane przez W3C. Pamiętaj, że WebRTC nie dostarcza tych funkcjonalności.

WebRTC to nie jest HTTP Long Polling.
HTTP Long Polling to alternatywa dla WebSocket. Strona klienta tworzy żądanie HTTPS (HTTPS request) z bardzo długim limitem czasu (timeout value). Kiedy serwer otrzymuje dane związane z klientem, wysyła je jako odpowiedź HTTPS (HTTPS response) do klienta. Następnie klient wysyła kolejne żądanie i cała zabawa zaczyna się od początku.

 

OK, więc co to jest?

WebRTC daje nam bezpieczne połączenie peer-to-peer, a żeby je utrzymać nie trzeba angażować żadnych dodatkowych mechanizmów ze strony serwerów. WebRTC wykorzystuje szybki i sprawdzony protokół UDP stosowany w warstwie transportowej modelu OSI. Szyfrowanie end-to-end gwarantuje protokół SSL.

WebRTC umożliwia:
• przeprowadzanie połączeń audio i/lub wideo,
• prowadzenie konferencji webowych,
• przesyłanie danych przez Data Channel.

W dodatku WebRTC jest już wbudowane w większość przeglądarek.

Może też być używane w każdej aplikacji na iOS i Androida.

 

Jak to działa?

1. Signaling

Signaling to etap, na którym dwóch użytkowników (peers) wymienia ze sobą informację o połączeniu. To jedyny moment, kiedy potrzebna jest komunikacja z serwerem zewnętrznym. Można ten proces podzielić na dwa kroki:
• wymiana SDP (Session Description),
• wymiana ICE Candidates (ICE candidates).

Opis Sesji RTC to tekstowa reprezentacja początkowej konfiguracji połączenia dla każdej z jego stron. Opisuje końcową konfigurację kanału komunikacji dla pojedynczego użytkownika (zwaną „ofertą” po stronie inicjującej połączenie, „odpowiedzią” po stronie odbiorcy).

Opisy Sesji RTC są ustandaryzowane.

Powinny zawierać:
• typ przesyłanych mediów (audio, wideo, współdzielenie ekranu),
• protokół używany do ich przesyłu,
• punkty końcowe (adresy IP i port),
• inne informacje potrzebne do opisania punktów końcowych transferu.

Połączenie peer-to-peer może odbywać się poprzez różne kanały komunikacji. Jeżeli dwa komputery znajdują się w tej samej sieci, połączenie odbywa się tylko z wykorzystaniem lokalnego routera. Jeśli komputery znajdują się w innych sieciach, musimy skorzystać z połączenia zewnętrznego, a w momencie gdy nasz firewall blokuje bezpośrednie połączenie, WebRTC potrafi wykorzystać zewnętrzne serwery (TURN), aby otworzyć połączenie pośrednie.

WebRTC w celu weryfikacji i ustanowienia połączenia przesyła obiekty nazywane „ICE kandydatami”. Na podstawie tych informacji następuje nawiązanie połączenia o możliwie najlepszych parametrach.

 
2. Połączenie
Jeden z uczestników zostaje wybrany na agenta kontrolującego (controlling agent). Agent kontrolujący odpowiada za ostateczną decyzję, która para kandydatów powinna zostać użyta do potwierdzenia i rozpoczęcia połączenia. Dzieli się tą informacją z drugim uczestnikiem — agentem kontrolowanym (controlled agent).

To tyle! Po przejściu tych kroków, uczestnicy mogą komunikować się ze sobą oraz przesyłać media i dane. Co więcej, WebRTC pozwala na stworzenie bezpośredniego połączenia. To znaczy, że możemy przesyłać i odbierać obrazy, filmy i tekst, a wszystko to w bardzo bezpieczny sposób.

To wszystko w tym artykule. Mam nadzieję, że przypadł Ci do gustu i okazał się przydatny. W kolejnym tekście pokażę Ci, jak stworzyć prostą aplikację iOS w technologii WebRTC i jak korzystać z WebRTC w praktyce.

Grzegorz Przybyła

Grzegorz Przybyła

iOS Team leader w AnyMind

Developer, którego największa pasją jest ciągły rozwój — jako programista i jako leader. Lubi dzielić się swoimi pomysłami z innymi członkami zespołu, a także z całym Swift community. Po pracy jeździ na rowerze, pływa, a także uczęszcza na lekcje Lindy-Hopa.

Jeżeli masz jakieś pytania związane z artykułami Grześka, nie czekaj, zadzwoń do niego przez AnyMind!

Dzwonię!