Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kafejka internetowa - połączenie między użytkownikami
Koleś
post 14.08.2007, 16:24:24
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 3.03.2007

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Koleś 15.08.2007, 16:22:40
Go to the top of the page
+Quote Post
szagi3891
post 14.08.2007, 23:36:26
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 9
Dołączył: 12.03.2007
Skąd: kraków/tarnobrzeg/baranów/suchorzów

Ostrzeżenie: (0%)
-----


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.


--------------------

Każdy z was jest łodzią w której
Może się z potopem mierzyć
Cało wyjść z burzowej chmury
Musi tylko w to uwierzyć!
Go to the top of the page
+Quote Post
kosmowariat
post 15.08.2007, 01:29:50
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 17
Dołączył: 18.07.2007
Skąd: Białystok

Ostrzeżenie: (0%)
-----


http://64pola.pl/ajax.html
Go to the top of the page
+Quote Post
Koleś
post 15.08.2007, 09:52:48
Post #4





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 3.03.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
envp
post 15.08.2007, 11:52:20
Post #5





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Koleś
post 15.08.2007, 12:47:44
Post #6





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 3.03.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Koleś 15.08.2007, 12:48:15
Go to the top of the page
+Quote Post
envp
post 15.08.2007, 13:26:52
Post #7





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


powodzenia smile.gif

Btw. a jak chcesz operowac skryptem php po stronie klienta?

Ten post edytował envp 15.08.2007, 13:27:30
Go to the top of the page
+Quote Post
Koleś
post 15.08.2007, 14:06:12
Post #8





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 3.03.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Koleś 15.08.2007, 14:06:52
Go to the top of the page
+Quote Post
envp
post 15.08.2007, 14:08:08
Post #9





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Ja ciebie nie rozumie przeciez chcesz zrobic to samo - bedziesz laczyl sie z serwerem tak czy siak ;]
Go to the top of the page
+Quote Post
Koleś
post 16.08.2007, 21:24:48
Post #10





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 3.03.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 16:12