Potřeboval bych další radu :-))
Co méně vytěžuje procesor? A taky, která z těchto dvou metod se používá v praxi (např. ve hrách)?
Mám klienta, ve kterém potřebuji aktualizovávat ze serveru list místnosti do, kterých se můžou následně připojovat. A napadají mě dva způsoby jak aktualizovávat ten list a nevím který z nich je ten lepší.
1) Způsob, který i ted používám je, že každou vteřinu požádám server, aby mi poslal jeho aktuální list místností. Což u tohoto způsobu se mi zdá, že dost zbytečně vytěžuji server vzhledem k tomu, že je velmi pravděpodobné, že mi vrátí stejný list jako nyní mám, jelikož tam žádná nová místnost za tu vteřinu nevznikla ani nezanikla.
Pro ukázku můj kod:
while (GameStates.Room == GameState.GetCurrentState())
{
lobbies = Query.GetLobbies();
if (listBox1.Items.Count != lobbies.Count)
{
listBox1.Items.Clear();
for (int i = 0; i < lobbies.Count; i++)
{
ListItem listItem1 = new ListItem();
listItem1.Text = string.Format("{0} {1}/4", lobbies[i].Name, lobbies[i].NumberOfPlayers());
listItem1.Color = Color.White;
listBox1.Items.Add(listItem1);
}
}
Thread.Sleep(1000);
}
2) Způsob o kterém přemýšlím, že bych tam implementoval je ten, že server si o každém klientovi bude vést údaje v jakém stavu se aktuálně nachází a pokud bude ve stavu, ve kterém bude čekat na list místností, tak server neustále bude kontrolovat jestli v jeho listu místností nějaká nová přibyla nebo naopak ubyla a poté by tento list až poslala všem svým klientům. Ale u toho se mi zase zdá jestli moc nevytěžuji server, jelikož to asi budu muset spustit tuto kontrolu na dalším novém vláknu.
Jinými slovy o aktualizaci listů na straně klienta by se měl starat server, nebo klient?
Co si o tom prosím myslíte?
Díky :-)