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.
3 answers
Tutaj na Stackoverflow jest kilka tematów na temat połączeń P2P w przeglądarkach:
- czy HTML5 pozwoli aplikacjom internetowym na nawiązywanie połączeń HTTP typu peer-to-peer?
- jakie techniki można wykonać P2P w przeglądarce?
- czy HTML5 obsługuje Peer-to-Peer (i nie tylko WebSockets)
- czy HTML5 Websockets może łączyć 2 Klientów (przeglądarki) bezpośrednio bez użycia serwera (P2P)
- czy możliwe jest stworzenie połączenia peer-to-peer w przeglądarce internetowej?
- czy websockets umożliwiają komunikację p2p (browser to browser)?
- HTML 5 Peer to Peer możliwości wideo?
- 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": {]}
- http://www.w3.org/TR/2008/WD-html5-20080122/#peer-to-peer
- http://www.w3.org/TR/2008/WD-html5-20080610/comms.html#peer-to-peer
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:
- http://dev.w3.org/2011/webrtc/editor/webrtc.html#peerconnection (W3C Editor ' s Draft)
- http://www.whatwg.org/specs/web-apps/current-work/webrtc.html#peerconnection (od 5 grudnia 2011 przekazywany do W3C Editor ' s Draft )
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!):
- https://labs.ericsson.com/apis/web-real-time-communication/
- https://labs.ericsson.com/developer-community/blog/update-webkit-contributions
Prawdopodobnie Chrome (używa WebKit) będzie pierwszą dużą przeglądarką obsługa WebRTC z PeerConnection:
- http://www.webrtc.org/blog/firststeptowardchromeintegration
- http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/95bf1e2e1de852fc
- https://lists.webkit.org/pipermail/webkit-dev/2011-November/018445.html
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:
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.
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.
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