Czy HTML5 pozwoli aplikacjom internetowym na nawiązywanie połączeń HTTP typu peer-to-peer?

Czy możliwe jest stworzenie aplikacji internetowej, która przy pomocy centralnego serwera mogłaby tworzyć bezpośrednie połączenia z innymi użytkownikami tej samej aplikacji? Wyobrażam sobie proces podobny do dziurkowania UDP.

Czytałem o nowym API WebSockets w HTML5, ale wygląda na to, że musisz zainicjować połączenie z serwerem kompatybilnym z WS, zanim w pełni podwójne połączenie może się rozpocząć. Myślę raczej o procesie nawiązywania bezpośrednich połączeń między klientami, z serwerem coraz udział Tylko w początkowym uścisku dłoni.

Uwaga: aplety Javy się nie liczą. Interesują mnie tylko standardowe technologie przeglądarek.

Author: Peter O., 2009-06-23

6 answers

Zamiast inteligentnych domysłów, oto świadoma odpowiedź:

HTML 5 planuje zezwolić na połączenia peer - to-peer z javascript, ale połączenia te nie będą surowym TCP.

Pełna specyfikacja znajduje się na stronie http://dev.w3.org/html5/websockets/

Jrh

EDIT: ze szczególnym odniesieniem do połączeń peer to peer, sprawdź te linki:

Its important to note that the możliwości są wciąż negocjowane. Miło będzie móc tworzyć aplikacje internetowe "local chat":)

Jrh

 106
Author: jrharshath,
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
2009-06-23 12:13:02

Aktualizacja 17.10.2012: ta funkcjonalność istnieje teraz w Chrome Stable v22. Aby korzystać z tej funkcji w Chrome, należy włączyć dwie flagi w chrome: / / flags:

  • Włącz MediaStream
  • Włącz PeerConnection

Następnie możesz odwiedzić AppRTC strona Demo aby wypróbować demo. Zobacz stronę WebRTC-uruchamianie dema, aby uzyskać bardziej szczegółowe instrukcje dotyczące konfigurowania Chrome do korzystania z funkcji peer to peer i włączania urządzenia schwytać.


UPDATE: inżynierowie w Ericcson Labs mają dowód koncepcji w kompilacji WebKit, który nie HTML5 Peer to Peer konwersacyjne wideo .

Mają demonstracje na swoim blogu technologii w działaniu, a także diagramy i wyjaśnienia na temat tego, jak technologia będzie działać.

Pracują nad ustabilizowaniem tego i zaangażowaniem w repozytorium WebKit.

 29
Author: jmort253,
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
2012-10-17 21:01:27

Tak, w końcu.

W chwili pisania tego tekstu (2017), WebRTC jest obecnie standardową częścią większości nowoczesnych przeglądarek (około 70% tych w użyciu) i pozwala na strumieniowanie multimediów, peer-to-peer i dziurkowanie.

Dokumenty, przykładowy kod i żywe przykłady WebRTC można znaleźć na html5rocks.com .

Zgodnie z caniuse.com i html5rocks.com , następujące przeglądarki obsługują WebRTC:

Pełne wsparcie: Edge 14, Firefox 22, Firefox Android 55
częściowe wsparcie: Android Browser 56, Chrome 20, Chrome Android 29, Edge 12, Firefox 17, Opera 18, Opera Android 20, Opera Mobile 12, UC Browser Android 11.4
przyszłe wsparcie (Q3 2017): Chrome dla iOS 11, Safari 11 Dla iOS 11 i OS X 10.11
brak wsparcia: IE, IE Mobile, Opera Mini

[2]}Szybkość nasycenia WebRTC jest ograniczona na urządzeniach Apple, ponieważ Safari 11 nie jest jeszcze wydany i wymaga iOS 11 lub OS X 10.11. Choć rzutowanie z poprzednich trendów aktualizacji WebRTC powinien być dostępny na około 75% urządzeń z systemem iOS przez 2018 i 100% przez 2020.
 5
Author: Beejor,
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-08-18 21:40:02

Istnieje wiele powodów, dla których byłoby to trudne:

    [[3]}firewalle (nawet zwykłe Naty) utrudniałyby tego rodzaju połączenie przy znacznie niższej warstwie protokołu niż nawet HTTP. Z moim kapeluszem bezpieczeństwa IT, wydaje się to wspaniałym sposobem, aby otworzyć dowolne porty na maszynie, po prostu odwiedzając stronę internetową - i tak byłoby agresywnie blokowane przez praktycznie wszystkie korporacyjne systemy IT.
  1. HTTP jest z natury protokołem klient-serwer. Chociaż jest to w miarę łatwe do symuluj komunikację dupleks za pomocą długiego sondowania (jak również kilku innych technik), nie jest to szczególnie skuteczne.
  2. To otworzyłoby dużą dziurę dla ataków XSS.

WebSockets ma na celu rozwiązanie drugiego z tych problemów, ale (celowo, spodziewam się) nie dwóch pozostałych. Kiedy mówią o peer-to-peer w specyfikacji HTML5, mówią o komunikacji full duplex między serwerem a klientem, a nie między jednym klientem i kolejny.

Byłoby jednak proste zaimplementowanie odpowiedniego stosu sieciowego na serwerach-z zastrzeżeniem, że cała komunikacja musiałaby odbywać się za pośrednictwem serwera. Widziałem to robione przy użyciu long polling (mój przyjaciel z Uni napisał pełny stos TCP/IP przy użyciu long polling).

 4
Author: jwoolard,
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-06-09 07:37:11

Popieram harshath.jr: bardzo dobrze można by mieć serwer działający jak katalog (wystawiający "origins" każdego podłączonego agenta; origin to scheme+host+port jak w draft-abarth-origin , a schemat to albo "ws" albo "wss"). Następnie można zainicjować połączenia peer-to-peer WebSocket; SOP jest przetwarzany dzięki CORS. Oczywiście oznacza to, że każdy agent (tj. przeglądarka) musiałby osadzić swój własny serwer WebSocket (à la Opera Unite).

In średni czas, zrób to XMPP / IRC / etc.- sposób: Brak połączenia peer-to-peer, ale połączenia WebSocket do centralnego serwera(lub sieci!), aby przekazać wiadomości do podłączonych agentów (ostatecznie za pomocą określonego WebSocket "subprotocol")

Edit: zauważ, że to wszystko jest poza zakresem HTML5 (wszystkie te rzeczy były kiedyś częścią HTML5, ale zostały podzielone na ich własne specyfikacje)
 0
Author: Thomas Broyer,
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
2009-06-23 12:37:23

Cała idea gniazd sieciowych polegała na rozwiązywaniu problemów z firewallami i proxy http://www.kaazing.org/confluence/display/KAAZING/What + is + an + HTML + 5 + WebSocket

 0
Author: goldeneye13,
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
2010-08-23 13:10:54