2013-04-15 10 views
14

Próbuję stworzyć podstawowe implementacje prostych gier (tic tac toe to projekt początkowy), które można odtwarzać przez Internet bez konieczności centralnego serwera. Strona nie musi nawet być hostowana i może być uruchamiana lokalnie na komputerze lub może być hostowana na serwerze WWW. Podczas hostowania gry strona poinformuje gospodarza o jego adresie IP, który może zostać przesłany znajomemu przez dowolną metodę (telefon, wiadomość błyskawiczną itp.). Ten znajomy będzie wpisywać lub kopiować/wklejać IP w oknie dialogowym łączenia i być w stanie zagrać w grę. Chciałbym, aby te 2 strony były w stanie to zrobić bez instalowania dodatkowego oprogramowania i bez kontaktowania się z centralnym serwerem jakiegokolwiek rodzaju.W jaki sposób mogę zaimplementować prostą bezserwerową przeglądarkę p2p do przesyłania wiadomości w przeglądarce przy minimalnym obciążeniu?

Przyjrzałem się wielu potencjalnym rozwiązaniom obejmującym pliki node.js, webrtc, websockets, flash, java itp. Każdy z nich ma problem z tym związany, na przykład wymagający serwera centralnego lub wymagający od klienta potencjalnie muszą pobrać coś, co nie jest jeszcze zainstalowane na swoim komputerze lub tylko przesyłanie audio i wideo i nie jest przydatne do wysyłania wiadomości danych. Może wydawać się banalne powiedzenie komuś, że trzeba pobrać java .. lub dla mnie, aby rozwinąć aplikację za pomocą flasha, ale to wszystko jest sprzeczne z moimi ostatecznymi celami.

Jeśli nie można zrobić tego, co chcę zrobić całkowicie w javascript, to po prostu nie jest to możliwe. Nie rozumiem jednak, dlaczego tak się nie stało, biorąc pod uwagę, że przeglądarki mogą samodzielnie wysyłać i odbierać dane tekstowe do adresów URL, które są adresowane do adresów IP lub bezpośrednio do adresów IP. Inne rozwiązania są mile widziane, ale jeśli nie można tego zrobić, tak naprawdę powinno być.

Proste wyjaśnienie dokładnych wymagań dla co próbuję zrobić, to:

  1. Należy używać całkowicie za darmo (jak piwo) technologii. (bez flashowania, zdaję sobie sprawę, że aplikacje internetowe dla Flash Playera mogą być kodowane za darmo, ale peer-to-peer w warstwie wymaga rejestracji na klucz beta, który zakładając, że mogę uzyskać za darmo, niekoniecznie pozostanie wolny na zawsze.)

  2. Brak zewnętrznych serwerów lub fałszywych komunikatów peer-to-peer. (znów jak w rozwiązaniach opartych na technologii flash lub jedności, w których można uzyskać imitację peer-to-peer, o ile używa się ich centralnego serwera)

  3. Brak pobierania klienta (z pewnością większość osób ma zainstalowane java lub flash, ale wiele nie, a java jest dość mocnym ściągnięciem i nie jest przyjazna dla niepiśmiennych użytkowników komputerów, a nawet próbuje teraz zainstalować paski narzędzi, poza tym wielu moich użytkowników nie będzie skłonnych do pobierania czegokolwiek, w tym java lub jedności. . które mają własne problemy odnoszące się do tego projektu jak już wspomniano)

Podsumowując, jeśli ajax może wysłać żądanie do określonego adresu IP i słuchać na odpowiedź .. dlaczego nie mogę dostać prostą peer to peer m essaging w czystym js? Czy mogę?

Nie powinienem hostować pełnego serwera WWW lub oddzielnej aplikacji lub wtyczki jakiegokolwiek rodzaju do wysyłania i odbierania danych.

Czy brakuje mi czegoś?

+0

Możliwy duplikat [Jak utworzyć czat internetowy P2P bez serwera?] (Http://stackoverflow.com/questions/2463665/how-create-a-p2p-web-chat- bez-bez-serwera) –

+0

Brak dup. Istnienie [WebRTC] (https://en.wikipedia.org/wiki/WebRTC) zmieniło znaczenie tego pytania. – Wolf

Odpowiedz

11

Po rekomendacji pubnub, spojrzałem tam i byłem pod wrażeniem. Jednak w końcu natknąłem się dokładnie na to, czego szukałem UNBELIEVABLY. RTCDataChannel jest odpowiedzią. This site w końcu pokazał, że to, czego chcę, jest możliwe. Obsługa tej funkcji przez przeglądarkę jest niewielka, ale rośnie, a cała próba wzmocniła moją wiarę w rosnącą obsługę aplikacji peer-to-peer w społeczności przeglądarki.

+1

PubNub oferuje również bibliotekę WebRTC do sygnalizacji. Może to pomóc, jeśli nie chcesz budować własnych serwerów sygnalizacyjnych. Można go znaleźć tutaj: https://github.com/pubnub/webrtc (Pełna klauzula prawna Pracuję w PubNub i zbudowałem ich bibliotekę WebRTC) – sharpper

+0

[Obsługa przeglądarki] (http://caniuse.com/#search=rtc) – mpen

0

Podsumowując, jeśli ajax może wysłać żądanie do określonego adresu IP i słuchać na odpowiedź .. dlaczego nie mogę dostać prosty peer to peer messaging w czystych js? Czy mogę?

Wynika to z faktu, że żądanie ajaxowe musi być obsługiwane przez serwer HTTP, więc nadal trzeba zainstalować serwer dla każdego klienta.

że chcesz

  1. darmowymi
  2. No zewnętrznych serwerów
  3. żadnych pobieranie klienta

Powiedziałbym, że jest to niemożliwe do archiwizacji z wszystkich tych wymagań oprócz tego, że wyciąć jedną z nich.

Moja sugestia to pubnub. To rozwiązanie nadal potrzebuje serwera i nie jest bezpłatne (mają darmowy poziom użycia). Ale dobrą rzeczą jest to, że masz naśladować połączenie p2p bez robienia rzeczy na serwerze i nie trzeba pobierać klienta.

Powiązane problemy