WebRTC vs Websockets: jeśli WebRTC może zrobić Wideo, Audio i danych, Dlaczego potrzebuję Websockets? [zamknięte]

zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the question so it edytując ten post.

Zamknięte 2 lata temu .

Popraw to pytanie

Więc szukam zbudować aplikację do czatu, który pozwoli wideo, audio i tekst. Spędziłem trochę czasu badając Websockets i WebRTC, aby zdecydować, którego użyć. Ponieważ jest mnóstwo aplikacje wideo i audio z WebRTC, brzmi to jak rozsądny wybór, ale czy są inne rzeczy, które powinienem rozważyć? Podziel się swoimi przemyśleniami.

Rzeczy takie jak:

  • Ze względu na to, że WebRTC jest dostępny tylko w niektórych przeglądarkach, podczas gdy WebSockets wydaje się być w większej liczbie przeglądarek.

  • WebSockets wykorzystuje serwer dla sesji i WebRTC wydaje się być p2p.

  • Multipleksowanie / wiele czatów-używane w Google + Hangouts oraz Nadal przeglądam aplikacje demo, jak zaimplementować.

  • Server-Websockets wymaga RedisSessionStore lub RabbitMQ do skalowania na wielu komputerach.

Author: Inconnu, 2013-09-14

8 answers

WebRTC jest przeznaczony do wysokowydajnej, wysokiej jakości komunikacji wideo, audio i dowolnych danych. Innymi słowy, dla aplikacji dokładnie takich, jak to, co opisujesz.

Aplikacje WebRTC potrzebują usługi, za pośrednictwem której mogą wymieniać metadane sieci i mediów, proces znany jako sygnalizacja. Jednak po zakończeniu sygnalizacji wideo / audio / dane są przesyłane strumieniowo bezpośrednio między klientami, unikając kosztów wydajności przesyłania strumieniowego przez serwer pośredniczący.

WebSocket na drugiej hand jest przeznaczony do dwukierunkowej komunikacji między Klientem a serwerem. Możliwe jest przesyłanie strumieniowe audio i wideo przez WebSocket( zobacz tutaj na przykład), ale technologia i interfejsy API nie są z natury zaprojektowane do wydajnego, solidnego przesyłania strumieniowego w taki sposób, jak WebRTC.

Jak napisali inni, WebSocket może być używany do sygnalizacji.

[[0]} utrzymuję listę zasobów WebRTC : zdecydowanie polecam zacząć od spojrzenia na 2013 Google I / O prezentacja o WebRTC.
 296
Author: Sam Dutton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-23 09:03:25

WebSockets:

  • Ratyfikowany standard IETF (6455) z obsługą we wszystkich nowoczesnych przeglądarkach, a nawet starszych przeglądarkach korzystających z web-socket-js polyfill.

  • Wykorzystuje http zgodne handshake i porty domyślne, co znacznie ułatwia korzystanie z istniejącej zapory, proxy i infrastruktury serwera www.

  • Znacznie prostsze API przeglądarki. Zasadniczo jeden konstruktor z kilkoma odwołaniami.

  • Klient / przeglądarka do serwera tylko.

  • Obsługuje tylko niezawodny, uporządkowany transport, ponieważ jest zbudowany na TCP. Oznacza to, że zrzuty pakietów mogą opóźnić wszystkie kolejne pakiety.

WebRTC:

  • dopiero zaczynają być obsługiwane przez Chrome i Firefox. Państwa członkowskie zaproponowały wariant niezgodny. Komponent DataChannel nie jest jeszcze kompatybilny między Firefox i Chrome.

  • WebRTC jest przeglądarką do przeglądarki w idealnych okolicznościach, ale nawet wtedy prawie zawsze do konfiguracji połączeń wymagany jest serwer sygnalizacyjny. Najbardziej popularne rozwiązania serwerów sygnalizacyjnych wykorzystują obecnie WebSockets.

  • Warstwa transportowa jest konfigurowalna, a aplikacja może wybrać, czy połączenie jest w porządku i / lub niezawodne.

  • Złożone i wielowarstwowe API przeglądarki. Istnieją biblioteki JS zapewniające prostsze API, ale są one Młode i szybko zmieniające się (podobnie jak sam WebRTC).

 73
Author: kanaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-04 18:54:14

Websockets używają protokołu TCP.

WebRTC to głównie UDP.

Tak więc głównym powodem używania WebRTC zamiast Websocket jest opóźnienie. Dzięki streamingowi websocket będziesz miał duże opóźnienie lub niestabilne odtwarzanie z niskim opóźnieniem. Dzięki WebRTC możesz uzyskać niskie opóźnienia i płynne odtwarzanie, co jest kluczowe dla komunikacji VoIP.

Po prostu spróbuj przetestować te technologie z utratą sieci, czyli 2%. Zobaczysz duże opóźnienia w strumieniu Websocket.

 68
Author: ankitr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-10 17:02:57

WebRTC czy websockets? Dlaczego nie użyć obu.

Podczas budowania czatu wideo/audio/tekstowego webRTC jest zdecydowanie dobrym wyborem, ponieważ wykorzystuje technologię peer to peer i gdy połączenie jest uruchomione, nie musisz przekazywać komunikacji przez serwer (chyba że za pomocą TURN).

Podczas konfigurowania komunikacji webRTC należy zastosować jakiś mechanizm sygnalizacyjny. Websockets może być dobrym wyborem tutaj, ale webRTC jest sposobem, aby przejść do informacji wideo/audio/tekst. Czaty są realizowane w sygnalizacji.

Ale, jak wspominasz, nie każda przeglądarka obsługuje webRTC, więc websockets może być czasem dobrym rozwiązaniem dla tych przeglądarek.

 41
Author: Mikael Holmgren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-26 06:35:47

Bezpieczeństwo to jeden z aspektów, który przeoczyłeś.

Z Websockets dane muszą przejść przez centralny serwer WWW, który zazwyczaj widzi cały ruch i może uzyskać do niego dostęp.

W WebRTC dane są szyfrowane end-to-end i nie przechodzą przez serwer (z wyjątkiem czasami potrzebne są serwery TURN, ale nie mają dostępu do treści przekazywanych wiadomości).

W zależności od zastosowania może to mieć znaczenie lub nie.

Jeśli wysyłasz duże ilości danych, oszczędność w kosztach przepustowości chmury ze względu na architekturę p2p webRTC może być warta rozważenia.

 15
Author: Tim Panton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-23 10:32:55

Porównywanie websocket i webrtc jest niesprawiedliwe.

Websocket jest oparty na TCP. Granica pakietu może być wykryta na podstawie informacji nagłówka pakietu websocket w przeciwieństwie do tcp.

Zazwyczaj webrtc korzysta z websocket. Sygnalizacja dla webrtc nie jest zdefiniowana, to do usługodawcy, jakiego rodzaju sygnalizacji chce użyć. Może to być SIP, HTTP, JSON lub dowolna wiadomość tekstowa / binarna.

Komunikaty sygnalizacyjne mogą być wysyłane / odbierane za pomocą websocket.

 10
Author: Austin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-16 09:43:41

Webrtc jest częścią połączenia peer to peer. Wszyscy wiemy, że przed utworzeniem połączenia peer - to-peer, wymaga procesu handshaking do ustanowienia połączenia peer - to-peer. A websockets odgrywają rolę procesu handshaking.

 8
Author: Rohit yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-13 14:35:06

Websocket i WebRTC mogą być używane razem, Websocket jako kanał sygnału WebRTC, a webrtc to kanał wideo / audio / tekstowy, również WebRTC może być w UDP również w przekaźniku, przekaźnik TURN obsługuje TCP HTTP również HTTPS. Wiele projektów wykorzystuje Websocket i WebRTC razem.

 3
Author: linkingvision,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-25 20:20:09