"Penso" (spero) di aver trovato la soluzione; se non gli trovo difetti, penso che oggi inizierò spedito come un treno (di quelli italiani, arcaici, che vanno a 2 km / ora e deragliano spesso
).
Il client (qualunque websocket client b4a, attualmente, non solo il mio) riceve testo in una routine; questo testo viene interpretato per far sì che venga lanciata una routine nel client stesso, con parametri.
Quindi il server invierà comandi con un certo formato "proprietario" (contenente un id del comando, un progressivo) interpretati ed eseguiti dal client. Questi comandi verranno inseriti in una coda, affinché il client, dovesse subire rallentamenti di connessione, possa eseguirli consecutivamente. Eccezione: il server invia comando speciale, il passaggio del turno al client; questo non andrà a finire nella coda ed il client, prima di continuare ad eseguire gli eventuali comandi ancora nella coda, confronterà i "CmdID" dell'ultimo eseguito con successo e di quello del ricevimento del turno. Se questi differiscono di più di 1, significa che il client è in ritardo; a questo punto il client eliminerà la coda e chiederà al server lo stato attuale.