Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kafejka internetowa - połączenie między użytkownikami
Forum PHP.pl > Forum > XML, AJAX
Koleś
Cześć. Zastanawiam się nad stworzeniem internetowej kafejki szachowej. Chcę napisać aplikację podobną do tej na stronie http://64pola.pl/. Dane pomiędzy graczami muszą być przesyłane możliwe jak najszybciej z minimalnym opóźnieniem.
Wpadłem na pomysł, żeby skorzystać z klasy Ajax.PeriodicalUpdater z biblioteki Prototype. Działa to na takiej zasadzie, że JS asynchronicznie pobiera lub zapisuje dane z/do pliku (lub bazy danych, co chyba jest kiepskim pomysłem). Problem w tym, że jeśli w kafejce będzie grać jednocześnie kilkadziesiąt osób, to obciążenie serwera będzie ogromne. Dodatkowo powstaje opóźnienie związane z zapisem do pliku.
Czy istnieje jakiś sposób w JavaScript, ActionScript albo w czymś innym oprócz Javy na nawiązanie bezpośredniego połączenia między graczami za pomocą przeglądarki?
szagi3891
raczej bezpośrednie połączenie powinno być możliwe przy pomocy flasha, a raczej na pewno. W każdym razie za pomocą ajaxa i samego protokołu http nie uzyskasz stałego połączenia.
kosmowariat
http://64pola.pl/ajax.html
Koleś
Cytat(kosmowariat @ 15.08.2007, 02:29:50 ) *

No tak, ja wiem co to jest Ajax smile.gif ale to nie jest odpowiedź na moje pytanie.
envp
No więc tak - przez Ajax możesz łączyć się z serwerem z którego jest odpalany skrypt - można to obejść robiąc w php swojego rodzaju proxy z którym łączy sięnasz Js, a php wymiania dane między nim a jakimśserwerem. Co do Javy - oczywiście da się w apleci zrobić wszystko - tylko do używania socketów musisz sobie stworzyć "sztuczny certyfikat", co jest konsekwencją, że user musi kliknąć "Tak" jak wyskoczy mu paskudne wielkie okno z ostrzeżeniem, że wchodzimy na strone o nieznanym podpisie. Co do podpisu - możesz go uzyskać za chyba okolo 300 dolarów - obejdzie się wtedy bez okienka. Więc - jest sens? Js też ponoć obsługuje sockety - wykorzystuje te z flashplayer (http://www.devpro.it/xmlsocket/) - teraz pozostaje kwestia obejścia firewalli, które będą płakały za każdym razem (oczywiście mowa o windowsie) - a gdy któryś z hostów stoi za NAT'em - twój pomysł z połączeniem bezpośrednim - pada smile.gif Więc najrozsądniejszym rozwiązaniem jest stworzenie centralnego serwera, przez który rozgrywki się będą rozgrywać. Najrozsądniej byłoby to zrobić w Java, ale najtrudniej - polecam więc AJAX + PHP + MySQL - a co do twojego gdybania, że kilkadziesiąt userów zarżnie serwer - odpada może kilkadziesiąt tysięcy - tak. Opóźnienie - będzie, ale łatwo to rozwiązać pytasz często jak możesz - pytasz serwer cczy drugi gracz zrobil ruch - dostajesz odpowiedz - to albo reagujesz albo znowu pytasz. smile.gif

Uff, pozdrawiam, Kamil.
Koleś
Cytat(envp @ 15.08.2007, 12:52:20 ) *
pytasz serwer cczy drugi gracz zrobil ruch - dostajesz odpowiedz - to albo reagujesz albo znowu pytasz. smile.gif

To rozwiązanie odpada. Może umieściłem tego posta w złym dziale, ale nie znalazłem lepszego.
Próbuję napisać coś takiego przy użyciu socketów w PHP i klasy XMLSocket w AS3, ale na razie idzie mi to jak przysłowiowa krew z nosa, bo jestem zielony w programowaniu socketów.
envp
powodzenia smile.gif

Btw. a jak chcesz operowac skryptem php po stronie klienta?
Koleś
Nie po stronie klienta, tylko serwera.
Znalazłem takie rozwiązanie: http://www.kirupa.com/developer/flash8/php...kets_flash8.htm
ale niestety działa u mnie tylko na localhoście, nie wiem gdzie jest błąd :/
Na ostatniej stronie są źródła do pobrania.
envp
Ja ciebie nie rozumie przeciez chcesz zrobic to samo - bedziesz laczyl sie z serwerem tak czy siak ;]
Koleś
Doszedłem do wniosku, że jednak najlepiej będzie zrobić to na serwerze socketów. Spodobał mi się Unity 2, niestety cena jest wygórowana jak na polskie warunki.
Ale to już nie jest temat związany z Ajaxem, więc myślę, że można zamknąć ten wątek.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.