Il fatto che tu debba implementare un sito di giochi o altro se mi permetti non giustifica la necessità del session lato client.
Esatto, ha ragione Flavio.
Se vuoi consentire ad un utente di giocare più partite contemporaneamente (o di giocare contro sé stesso) non c'è l'effettiva necessità di creare più sessioni. Anzi, secondo me non dovresti proprio usare l'oggetto Session.
Se un utente volesse giocare contro sé stesso, il flusso potrebbe essere questo:
- L'utente Mario clicca il bottone per creare una nuova partita;
- In risposta a questa azione, la tua applicazione crea un nuovo oggetto Partita che ha un proprio ID univoco. Inoltre, l'applicazione aggiunge l'utente Mario alla collezione Giocatori dell'oggetto Partita. Questa relazione tra Mario e quella specifica Partita ha essa stessa un proprio ID che viene restituito al client;
- Mario apre una nuova tab nel browser e vede che nell'elenco delle partite aperte c'è quella che lui stesso ha creato. La seleziona e clicca il bottone "Unisciti alla partita";
- In risposta a questa azione, la tua applicazione unisce Mario (di nuovo, come secondo giocatore) alla collezione Giocatori dell'oggetto Partita. Questa nuova relazione tra Mario e la Partita ottiene un nuovo ID che viene restituito al client;
- Quando Mario fa una mossa nella prima tab, invierà sia l'ID della partita che l'ID che gli era stato assegnato come primo giocatore;
- Quando Mario fa una mossa nella seconda tab, invierà l'ID della partita (che è lo stesso usato nella prima tab) che l'ID che gli era stato assegnato come secondo giocatore (che è diverso da quello della prima tab).
Come vedi non c'è alcun bisogno di usare sessioni. Semplicemente si tratta di ID che aiutano l'applicazione a identificare chi sta facendo una certa mossa e in relazione a quale partita.
Ti consiglio giusto di non usare degli ID numerici autoincrementanti perché sarebbero predicibili. Per questioni di sicurezza è meglio che gli ID siano del tipo Guid.
https://docs.microsoft.com/it-it/dotnet/api/system.guid.newguid?view=netframework-4.8Il giocatore deve conoscere solo l'ID della partita e l'ID che gli è stato assegnato come giocatore, e non gli ID degli altri giocatori altrimenti potrebbe compiere delle mosse per loro conto.
ciao,
Moreno
Modificato da BrightSoul il 24 agosto 2019 11:53 -