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 SDP
offer
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 SDP
answer
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 ...
to dotyczy sygnalizacji? – nick
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
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