Autor Wątek: Serwer-Klienci: opoznienia w GUI  (Przeczytany 1491 razy)

Offline Yazilim

  • Użytkownik

# Sierpień 03, 2006, 15:01:15
Witam!

Kontynuje temat komunikacji serwer-klienci, tym razem chodzi mi o sprawe GUI. Powiedzmy, ze z klienta przesylamy do serwera wszystkie informacje na temat klikniec myszka. Nastepnie serwer rozsyla to po innych klientach, przez co symulujac mozna uzyskac teoretyczne ten sam wyglad ekranu, jak na kliencie "zrodlowym". Ale tylko teoretycznie. Bo rozpatrzmy taka sytuacje: mamy okienko GUI, a w nim powiedzmy liste wyboru, w ktorej jest tyle elementow, ze nie mieszcza sie w liscie i trzeba przewijac paskiem przewijania, aby dostac sie do danego elementu. W tym momencie na kliencie gracz klika na pasek przewijania, ale nie na sama belke, ale na obszar pomiedzy belka a koncem paska, i trzyma tak wcisniety klawisz myszki, co powoduje jak wiadomo przewijanie listy o cale strony. W momencie, gdy gracz zobaczy swoja opcje wyswietlona, puszcza klawisz myszki i wybiera opcje klikajac juz w nia bezposrednio. Problemem tutaj jest to, ze czas pomiedzy wcisnieciem a puszczeniem klawisza myszki jest bardzo wazny, bo jesliby trzymalo sie dluzej lub krocej, to przewinie sie albo za duzo, albo za malo stron i nie zobaczy sie szukanej opcji. I teraz zauwazmy, co sie stanie, jak taki komunikat najpierw o nacisnieciu klawisza a potem o puszczeniu klawisza myszki pojdzie do serwera. Juz wtedy moga byc niezle zaklamania, bo ze wzgledu na zmieniajace sie warunki w sieci odstep czasowy miedzy tymi komunikatami moze byc zupelnie inny, niz byl w kliencie, co finalnie spowoduje u innych klientow przewiniecie za duzo albo za malo i wybranie zlej opcji.
Jakie rozwiazanie widzicie na takie problemy? Czy na przyklad wysylac informacje o kliknieciu/puszczeniu klawisza ale dodatkowo z polem czasu, w ktorym zostalo to wykonane? Dzieki temu po odebraniu informacji o puszczeniu klawisza bedzie sobie mozna obliczyc jaki byl rzeczywisty odstep czasowy?
Albo moze w ogole nie wysylac siecia informacji o kliknieciach myszka, ale informacje o jakby rezultatach, ktore spowodowaly te klikniecia, w tym powyzszym przypadku bylaby to informacja, ze wybrano taka a taka opcje z listy.

Pozdr,
Yazilim.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline skiter

  • Użytkownik

# Sierpień 03, 2006, 15:11:45
Dodac kolejny "guzik", jak juz wybierze odpowiednia opcje "wyslij" ...

Offline Yazilim

  • Użytkownik

# Sierpień 03, 2006, 15:34:52
Dodac kolejny "guzik", jak juz wybierze odpowiednia opcje "wyslij" ...
To znaczy? Nie za bardzo kojarze - mozesz dokladniej opisac, co masz na mysli?

Offline skiter

  • Użytkownik

# Sierpień 03, 2006, 15:42:21
Dodac kolejny "guzik", jak juz wybierze odpowiednia opcje "wyslij" ...
To znaczy? Nie za bardzo kojarze - mozesz dokladniej opisac, co masz na mysli?
Jka jest GUI, jakiego kolwiek programu czyli zwykly program jak program, prawda ?, na takiecos wlasnie jak "rozwijana lista wyboru", czyli to o czym piszesz, ze jest:

- Opcja 1
- Opcja 2
itd ....

Rozwijana w dół ma sie rozumiec ... czyli w Borland np nazywa sie to ListBox, zapewne w VS i innych podobnych tez bedzie to ListBox, czyli jest to element Windows GUI, kontrolka jak kazda inna, tak samo "guzik" inymi slowy Button, tez jest kontrolka GUI windowsa, nie widziales nigdy guzika?

Teraz urzytkownik rozwija liste, i przewija tak dlugo paskiem az znajdzie, jezeli sie pomyli to rozwija kolejny raz ... az do skutku, ty w tym czasie nie wysylasz "odrazu" po wybraniu pozycji z listy, do serwera, tylko obok takiej listy dodajesz jeszcze maly "guzik" tak zeby zabezpieczyc sie przed wysylaniem "wiadomosci" do serwera w razie pomylenia sie uzytkownika. Uzytkownik swiadomie musi "nacisnac guzik" zeby wyslac cos do serwera, jednak zanim to nastąpi musi wybrac pozycje z listy prawda?, po co atakowac serwer ... jak sie uzytkownik pomyli ... ? zwlaszcza ze sam napisalem ze ta lista bedzie bardzo dluga.....

Offline Yazilim

  • Użytkownik

# Sierpień 03, 2006, 15:50:10
Aha, no teraz opisales ladnie i wszystko jasne  :)
Czyli proponujesz w sumie to, co ja napisalem jako druga propozycje do wziecia pod uwage, czyli nie przesylac samych klikniec, ale informacje o wykonanych akcjach -> w tym przypadku przeslemy informacje o wybranej opcji z listy. Oczywiscie najlepiej zrobic to w momencie, jak bedziemy zamykac okno dialogu i zatwierdzac go, wiec w sumie po co dodawac kolejny przycisk, jak mozna to zrobic podczas przycisniecia przycisku "OK"  ;)