2010-07-19 18 views
12

Czy jest jakikolwiek sposób, aby przeglądarki komunikowały się ze sobą za pośrednictwem lan/wan bez korzystania z serwera (bezpośredniego peer-to-peer)?Komunikacja między przeglądarką a serwerem bez przeglądarki?

+0

Dla wszystkich pytających dlaczego, byłem zainteresowany, aby sprawdzić, czy istnieje rozwiązanie umożliwiające prosty/szybki transfer plików przez LAN bez pobierania przez użytkownika niczego. –

Odpowiedz

5

Wygląda na to, że może być nadzieja na horyzoncie: http://www.w3.org/TR/webrtc/

+0

Jako przykład: https://github.com/cowbell/sharedrop Wykorzystuje HTML5 i WebRTC do przesyłania przez LAN –

0

Krótka odpowiedź: Nie. Niemożliwe.

Długa odpowiedź: Można napisać podpisany applet java, który implementuje serwer WWW w każdej przeglądarce. Wtedy przeglądarka "a" może porozmawiać z apletem przeglądarki "b" (nie "zamykaj tej karty!"). W ten sposób miałbyś ograniczony dostęp do stanu przeglądarki innych użytkowników.

Podobnie można napisać wtyczkę/dodatek, który może osiągnąć wiele z tego samego.

Prawdziwe pytanie brzmi: dlaczego chcesz to zrobić? co próbujesz osiągnąć? Odpowiedz na to pytanie i być może uda nam się znaleźć rozwiązanie.

0

Tak, mogą, ale muszą być zaprojektowane w celu ustanowienia połączenia (lub wymagają modułu, który to zrobi).

Nawet jeśli zastanawiam się, dlaczego oni muszą ..

1

IIRC, Opera wydała jakąś oprócz swojej przeglądarce wbudowanego serwera WWW, który tylko dla tej funkcji:

http://unite.opera.com/

Nie jestem pewien, czy to naprawdę nadeszło, ale myślę, że nadejdzie jego czas.

+0

+1 interesujące. Ale nie tworzy bezpośredniego połączenia, wykorzystuje serwery operowe, aby ominąć ograniczenia NAT (naprawdę jedyny mądry sposób, aby to zrobić). Http://www.jorgemarsal.com/blog/2009/06/16/how- does-opera-unites-file-sharing-service-work/ –

+0

Ah, rozumiem. Zakładałem, że używa ona zeroconf/Bonjour do rozwiązywania lokalnych klientów. No cóż, może kiedyś w przyszłości zrobi się to za pomocą node.client.js + CouchDB lub coś w tym stylu. – guns

1

W czystym HTML/Javascript? Prawdopodobnie nie.

Według mojej wiedzy nie ma dobrej drogi w natywnym kodzie JavaScript do odsłuchiwania połączeń. W protokole HTTP klient otwiera port, wysyła żądanie i otrzymuje odpowiedź. Możesz użyć XHTTP lub podobnej klasy, aby złożyć wniosek, ale nie ma dobrej drogi na normalnej stronie internetowej, aby utworzyć serwer na drugim końcu, który będzie nasłuchiwać żądań.

Biorąc to pod uwagę, wiem, że Flash udostępnia bibliotekę gniazd, która pozwala na odsłuchiwanie połączeń. (Wyobrażam sobie, że Silverlight też to robi, chociaż ja go nie przebadałem.) Jeśli tworzysz obiekt przy użyciu którejś z tych technologii, możesz wysłuchać żądań połączeń od dowolnego klienta (zakładając, że nie jesteś za zaporą ogniową lub inne urządzenie do filtrowania połączeń), utrzymuj otwarte gniazdo i wysyłaj co chcesz za pośrednictwem kabla.

Podsumowanie:

  1. Prawdopodobnie nie można tego zrobić w JavaScript/HTML/CSS.

  2. ALE, możesz to zrobić w Flash lub Silverlight.

0

Flash - Stratus. Nowe rzeczy w najnowszym flashu, który zapewnia połączenia P2P.

0

Jeśli przeglądarek są za zaporami Możesz zajrzeć za pomocą NAT. Protokoły takie jak STUN i TURN są używane przez WebRTC, aby to zrobić. Ta strona internetowa ma kilka ładnych przykładów/samouczków: HTML5 Rocks

0

Tak, możesz spróbować http://httprelay.io z połączeniami AJAX. To jest proste:

* Send data: POST https://httprelay.io/link/your_secret_channel_id 
* Receive data GET https://httprelay.io/link/your_secret_channel_id 
Powiązane problemy