Klumpigt formulerat av mig, med "fler(?)" klienter menade jag "ett tusental klienter som KANSKE lyckas överbelasta servern"
Som du säger är detta inget du behöver tänka på just nu.
Jag kan inte tänka mig annat än att de större webbhotellen har skalat rätt bra för olika typer av appar och flyttar/meddelar dig om det skulle bli några resursproblem. Vill inte göra någon reklam men personligen gillar jag Loopia, de känns seriösa och jag har kört lite olika typer av applikationer där utan problem.
Sen ska du nog inte tänka dina klienter som "inloggade" för det är de "aldrig". Webbservern hanterar bara en request som kommer in, skickar ett svar och sen vilar den igen. Du bör hantera varje request från appen som ett fristående, dvs skicka med alla variabler och grejer du behöver för att identifiera och autentisera användaren varje gång.
Tror inte det ska vara svårare än att du gör en vanlig HTTP request från PHP. Finns lite olika metoder att göra det på och här är det lite upp till webbhotellet och vilka funktioner som stöds.
JSON låter bra!
Hanterar du enkelt i både PHP och Java.
Yep, se det som att du hämtar data från servern och på köpet kan du skicka med data när du gör det.
Tycker du ska göra det mesta av felhanteringen i klienten. Vid matchmaking, skicka en förfrågan om det finns någon annan spelare som väntar. Gör det inte det så vänta lite och prova igen några gånger. Till slut kan du meddela spelaren om att det tyvärr inte finns någon tillgänglig motspelare. Samma sak vid annan kommunikation, jag skulle åtminstone inte inledningsvis brytt mig om att kolla nätverkstatus så mycket utan bara köra iväg ett anrop. Funkar det inte eller om du får ett oväntat svar, vänta lite och prova igen. Efter några gånger meddelar du att det blivit något fel och man kan försöka senare.
Det finns lite olika inbyggda metoder för att sätta timeout, retries etc på anrop, använd dessa tillsammans med egna funktioner. Se bara till att alltid faila till slut och meddela användaren så de inte hamnar i någon tråkig evighetsloop.
Sen tycker jag du ska titta lite på det omåttligt populära Wordfeud... känns som att de har tänkt på och implementerat det mesta av det du eftersträvar
Där ser man t.ex. när man "kallstartar" appen att den inte är "inloggad", skärmen är tom någon sekund innan den hunnit snacka med servern och ladda ner aktuella spelomgångar.
Lycka till!
EDIT: Som jag misstänkte så använder Wordfeud C2DM för uppdateringar.
Last edited: Oct 21, 2011