Jak mogę nawiązać połączenie z przeglądarką (peer to peer)? [zamknięte]

Jak mogę napisać stronę za pomocą HTML5, CSS i JavaScript Po stronie klienta, który umożliwia bezpośrednie połączenie tcp/ip między przeglądarkami klienta po załadowaniu strony.

Muszę to zrobić, aby zmniejszyć opóźnienie, ponieważ strona będzie wymagać, aby dane wejściowe od jednego z użytkowników zostały przesłane do drugiego użytkownika tak szybko, jak to możliwe, więc wysyłanie danych z klienta a do serwera, a następnie do klienta B nie jest dobrym rozwiązaniem.

I read previous posty na ten temat, ale nie było żadnego roboczego rozwiązania / przykładów dostępnych, które mógłbym znaleźć. Z tego, co czytałem bezpośrednie połączenie między klientami może być wykonane za pomocą wtyczek takich jak Silverlight, Java lub Flash.

Czy jest jakieś rozwiązanie, które nie wymagałoby wtyczek? Chciałbym używać tylko JavaScript.

Author: johnnyRose, 2011-08-11

3 answers

Tutaj na Stackoverflow jest kilka tematów na temat połączeń P2P w przeglądarkach:

  1. czy HTML5 pozwoli aplikacjom internetowym na nawiązywanie połączeń HTTP typu peer-to-peer?
  2. jakie techniki można wykonać P2P w przeglądarce?
  3. czy HTML5 obsługuje Peer-to-Peer (i nie tylko WebSockets)
  4. czy HTML5 Websockets może łączyć 2 Klientów (przeglądarki) bezpośrednio bez użycia serwera (P2P)
  5. czy możliwe jest stworzenie połączenia peer-to-peer w przeglądarce internetowej?
  6. czy websockets umożliwiają komunikację p2p (browser to browser)?
  7. HTML 5 Peer to Peer możliwości wideo?
  8. czy WebRTC jest już zaimplementowany w jakichkolwiek przeglądarkach?

Jak wspomniano w większości topictów, oba robocze wersje HTML5 2008 miały sekcję " Peer-to-peer połączenia": {]}

Od czasu W3C Working Draft 12 lutego 2009 sekcja "Peer-to-peer connections" zniknęła. Ale to połączenie P2P nie zniknęło. Jest z powrotem pod nazwą PeerConnection w WebRTC (komunikacja w czasie rzeczywistym) DANE TECHNICZNE:

Od 31 października 2011 roku redakcja W3C jest oficjalnym projekt:

Jedyna implementacja PeerConnection (oparta na UDP) istnieje w zmodyfikowanym WebKit przez Ericsson labs (maj 2011), który działa całkiem dobrze. Niektóre łatki są już w WebKit (Paź. 2011 -- zobacz aktualizacje poniżej!):

Ponadto inicjatywa WebRTC jest projektem Google, Mozilli i opery. W związku z tym kontynuują specyfikację na PeerConnection:

Prawdopodobnie Chrome (używa WebKit) będzie pierwszą dużą przeglądarką obsługa WebRTC z PeerConnection:

Od 18 stycznia 2012 roku, Chrome obsługuje również WebRTC . Można go używać w kanale Dev (Windows, OSX, Linux) i Canary build (Windows i OSX) by umożliwiając jej pod chrome://flags. Obsługuje tylko {[1] } Jak wideo i audio i może być testowany z kilku dema . Przesyłanie danych aplikacji, takich jak String/ArrayBuffer/... nie jest obsługiwana do tej pory.

Od 16 marca 2012, Projekt edytora WebRTC oddziela "Peer-to-peer Data API" do wysyłania i odbierania ogólnych danych aplikacji (String, ArrayBuffer i Blob). Chrom chce wdrożenie API danych wkrótce (10 kwietnia 2012).

3 kwietnia Mozilla opublikowała pierwszy roboczy przykład na WebRTC dla Firefoksa.

[[7]}DataChannel jest planowany dla wersji 25 Chrome, za flagą, tymczasem może być testowany w Firefox Nightly / Aurora (12 grudnia 2012):

2018: DataChannels są wciąż eksperymentalne, ale dostępne w aktualne wersje Chrome i Firefox:

 110
Author: Dennis,
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-05-03 15:18:08

Będę musiał cię rozczarować - obecnie nie jest to możliwe tylko z JavaScript. Websockets (oraz Socket.IO) pozwalają na połączenie typu socket między Klientem a serwerem, ale nie między klientami. Twoja opcja to wtyczka-czy to Flash, Silverlight, Java lub na zamówienie.

Możesz użyć socket.io i emulować to pisząc prosty serwer proxy.

 6
Author: Emil Ivanov,
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
2011-08-11 07:38:12

Chciałbym zwrócić uwagę na fakt, że większość użytkowników obecnie stoi za NAT lub firewallami, a to oznacza, że nie można łatwo nawiązać połączenia przychodzącego z komputerem użytkownika. Tak więc twój pomysł (o ile to możliwe) zadziała tylko w niektórych przypadkach i wniesie dodatkową złożoność do Twojego rozwiązania. Więc system klient-serwer z ewentualnie trwałym połączeniem (za pomocą websockets lub socket.io) jest lepszym rozwiązaniem.

 2
Author: Eugene Mayevski 'Allied Bits,
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
2011-08-11 11:22:59