Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][AJAX] Czat Jak on działa?
Forum PHP.pl > Forum > Przedszkole
_Martin_
Witam


Bawie sie od kilku dni ajaxem, I Chce się czegoś spytać, może zaczne nie na temat ale na pewno do czatu dojde smile.gif?

Co będzie lepsze, jakie rozwiązanie wybierzcie proszę i mile widziane opinię smile.gif

Opis problemu:
Chce aby po zmianie miejsca na mapie (Jak zrobie ruch hipkiem smile.gif wyświetlało mi u innych graczy którzy są na danej mapie info w postaci przesunięcia gracza na daną pozycje smile.gif

Sposób 1.
Rozwiązanie sposobem pierwszym to wykorzystanie ajax'a aby wchodził do pliku w którym jest funkcja odpowiedzialna za wyświetlanie na mapie hipoli i sprawdzanie ich pozycji: Szerokość długość wiec w tym wypadku bedzie zwracana co sekunde pozycja i wyświetlana na mapie smile.gif
To przy dobrych wiatrach ok 2-3 zapytania na sekunde dla gracza * 100=200-300 na sekunde zapytań smile.gif Pomysł dorby? Ale na chyba małą ilość graczy prawda?


Sposób 2.

I tu właśnie chce wejść w czata, zauważyłem jedno, kiedyś, instalując gotowy skrypt dość ciekawy z obsługą ajax, Edytowałem pliczki i znalazłem taki fajny kodzik odpowiedzialny za sprawdzanie czy doszły jakieś nowe wiadomosci.
I tutaj już bez połączenia z SQL, TYLKO CZY TO Doby pomysł bo nie wiem kompletnie a wiec tak:
* Podczas napisania wiadomości, fakt jest ona notowana w bazie mysql ale też w pliku, XML. z info o dacie tresci i osobie która to napisała i oczywiście ID smile.gif No i u innej osoby skrypt sprawdza np co sekunde czy wiadomość nie doszła ale nie łączy się sql tylko z xml'em tylko ciekawe jak to spr...

No i jak myślicie który pomysł lepszy bo chce się poradzić i wybrać jakiś aktualnie używam 1 sposobu ale jak będzie powiedzmy 100 online bo oczekuje ze po jakimś czasie tyle będzie, to chyba serwery nie wytrzymają hehe smile.gif
P.S Przy okazji powiedźcie czy każdy czat tak działa bo się kompletnie w dziedzinie tej nie orientuje smile.gif

PozdrowionQa

Za pomoc dam "+"
johnson
Czaty dzialaja na roznych zasadach, jedne uzywaja bazy, inne plikow, nie ma reguly.

Sam zrobilem kiedy czat na SQLite, zeby nie obciazac MySQL zapytaniami, ale faktycznie byl to czat na niewiele osob.

Teraz jak tak mysle to wykorzystalbym raczej pliki tekstowe w formacie:

Timestamp|Name|Tresc

Jesli ktos by napisal wiadomosc na czacie Twoj skrypt dodawalby ta tresc do tego pliku tekstowego. Musilby on tez uwazac, zeby ten plik nie byl zbyt duzy, powiedzmy usuwac wiadomosci starsze niz np. 2 min. Zakladam, ze kazdy klient odczytywalby nowa zawartosc co najmniej co 30 sekund.

Reszte w zasadzie mozesz juz zrobic tylko w Javascript, a konkretnie ja bym uzyl jQuery. Ladujesz zawartosc tego pliku do zmiennej Javascript "obrabiasz" odpowiednio i wyswietlasz tylko wiadomosci od ostatniego timestampa, ktorego zapisujesz w zmiennej javascript. Timestamp pochodzi z pliku tekstowego, czyli jest to Timestamp serwera, a nie klienta, ktory moze byc inny. Tym sposobem mamy pewnosc, ze kazdy ma taki sam timestamp. Przy pierwszym zaladowaniu czata, kiedy uzytkownik nie ma jeszcze swojego timestampa, ladujemy z pliku wszystkie rekordy. Dzieki takiemu rozwiazaniu cala robote w zasadzie robi przegladarka uzytkownika, dzieki czemu mozna moim zdaniem aktualizowac dane nawet co 10 sekund.

To niestety tylko teoria, sam tego rozwiazania nie testowalem, sadze jednak, ze jest wykonalne i wydaje sie w miare efektywne. Moze w najblizszym czasie sprobuje cos takiego zrobic, nawet z samej ciekawosci smile.gif
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.