2015-11-28 17 views
5

Potrzebuję opracować niestandardowy peer WebRTC (muszę ustanowić połączenie audio i/lub danych pomiędzy przeglądarką internetową a przeglądarką inną niż przeglądarka). Staram się jednak znaleźć odpowiedni, jasny opis fazy uzgadniania.W jaki sposób wygląda proces negocjacji negocjacji między uczestnikami WebRTC?

Odpowiedzi na pytania takie jak How to create data channel in WebRTC peer connection? nie są całkowicie pomocne, ponieważ nie są zbyt szczegółowe. W szczególności nie mówią nic o zawartości SDP.

Czy ktoś może to wyjaśnić lub zalecić dobrą dokumentację?

+0

to dotyczy sygnalizacji? – nick

+0

Tak. Rozumiem, że moją rolą jest zbudowanie kanału początkowo dostarczającego ofertę/odpowiedzi dla rówieśników, ale nie mogę znaleźć szczegółowych instrukcji, jak te wiadomości powinny być budowane. – mspanc

+1

Zacznij od ICE: https://tools.ietf.org/html/rfc5245 - obejmuje także podstawowe momenty w SDP. Zasadniczo, musisz zacząć od ICE i STUN/TURN, a następnie kontynuować z SDP. Na tym etapie Twoja aplikacja będzie mogła się wymieniać z pakietami SDP i przejdzie etap sygnalizacji. Następnie będziesz potrzebował obsługi protokołu DTLS dla swojego klienta. A następnie SRTP/SCTP. – fycth

Odpowiedz

8

Here is a page with some graphs showing how the signaling process works. Zasadniczo najpierw ustawia się pewne składniki po stronie klienta:

  • PeerConnectionFactory; do generowania połączeń PeerConnections,
  • PeerConnection; po jednym dla każdego połączenia z innym równorzędnym, którego chcesz (zwykle 1),
  • MediaStream; podłączyć audio i wideo z urządzenia klienckiego.

Następnie generuje SDPoffer

peerConnection.createOffer(); 

po stronie rozmówcy i wysłać go do odbierającym. Wywoływany ustawia tę offer

peerConnection.setRemoteDescription(insert-the-offer-here); 

i generuje SDPanswer

peerConnection.createAnswer(); 

i wysyła go z powrotem do osoby dzwoniącej. Osoba dzwoniąca otrzymuje tę answer i ustawia ją.

peerConnection.setRemoteDescription(insert-the-answer-here); 

Obaj rozmówcy i wywoływany dostać wezwanie do

onAddStream() {...} //needs to be implemented in your code 

wywoływany, gdy jest ustawiony rozmówcy offer i rozmówcę, gdy jest ustawiony wywoływany na answer. To wywołanie zwrotne sygnalizuje początek połączenia.
Możesz także użyć ICE (STUN/TURN), aby uniknąć problemów z firewall i NAT, ale jest to opcjonalne. Chociaż w kodzie produkcyjnym prawdopodobnie i tak chcesz go zaimplementować.

Uwaga: dokumentacja WebRTC jest uboga i może ulec zmianie, wziąć wszystko, co przeczytasz o WebRTC (przynajmniej cokolwiek napisane jak na razie) z przymrużeniem oka ...

Powiązane problemy