... Abschrieb vom Whiteboard.
Kommunikation zwischen //Protocol adapter// und //Dings 1//.
<code>
C: register(gameId, playerNr, key, aboState, aboPlayer, aboToPlayer, keepAlive/autoUnregster,
Timeout 1, Timeout 2)
key: Wenn kein key beim Server für den Player hinterlegt ist (z.B. weil der client einen
time out hatte), dann ignoriere den übergebenen key und weise einen neuen zu.
S: ticket(gameData, playerID, key)/ERR
key nicht in to Player, damit keiner Schummeln kann
wirklich alles in gameData nötig? (eigentlich nur für web Player)
------ Ab hier ist die Verbindung aufgebaut und folgende Nachrichten können folgen
C: unregister
Geschlossene Verbindung nicht hinreichen, da HTTP player auch ohne Verbindung aktiv
bleiben muss. Daher "auto unregister" für Protokolle oder "keep alive" für HTTP player.
S: OK/ERR
C: move(s)
Kann player jeder Zeit senden. Aufforderung zum move, muss Protokoll Adapter anhand von
state() erkennen.
Zwischen move() und OK/ERR alles state/player()/toPlayer().
S: OK/ERR
Ist das nötig?
S: state(nr, data)
S: player(nr, data)
Vor toPlayer(), damit sich state machine drauf einstellen kann.
Kann "geheime" infos, wie verdekte Karten der Gegner, beinhalten.
S: toPlayer(data)
Flexibler, damit können auch daten zwichen den Zügen an die Player gesendet werden.
key => (type, value)
"next" -> int(3)
"board" -> array(...)
C: requestState/Player ???
S: quit(reason)
</code>