Ti rispondo in italiano e, se ci riesco, traduco
La base del mio progetto sarebbe già quasi pronta; ma nascono problemi solo nel caso in cui un client, proprio un dispositivo fisico, abbia problemi di lentezza della connessione, non di caduta della connessione.
Non è necessario che il server interroghi ogni client per sapere se sia ancora connesso perché l'oggetto websocket sul server scatena un evento, Disconnected, quando un client appunto si disconnette (il server sarà informato dal sw lato client se la disconnessione sia stata una scelta dell'utente).
Il problema non è quando il giocatore che ha la connessione lenta è di turno; il giocatore ha 20 secondi di tempo per scegliere la carta da giocare; se entro quel tempo non fa la propria scelta, il server (il gioco) giocherà per lui una carta in modo casuale e poi passerà il turno al giocatore successivo.
Il problema è che qualunque dato il server invii a questo "client lento", anche quando non sia di turno, scombussola tutto. Ad esempio, tra i tanti tipi di dato che potrebbe ricevere, ci sono le carte giocate dagli altri giocatori, a turno... magari per colpa della sua connessione lenta riceverà queste informazioni tutte insieme: giocatoreA ha giocato carta 11, giocatoreB ha giocato carta 3... Ovviamente, nel momento in cui riceverà queste informazioni, partiranno le relative animazioni (le carte che passano dai due giocatori al tavolo). Ma questo è solo un esempio, i dati che il "client lento" riceverà saranno tanti e di tanti tipi diversi... oltretutto, il guaio è che li riceverà in ritardo ma li riceverà comunque, non c'è modo di sapere quando li riceverà né di eliminarli dalla "coda" dei messaggi che ha ricevuto, se non facendo salti mortali di "architettura".
Ora come traduco tutta 'sta roba?
Now, I should translate
In short: see post #26