Fin qui ok, e la risposta è sì: usando Javascript (AJAX). In futuro si potrebbero usare i websocket, ma è ancora prematuro.
La tabella è meglio che sia già presente nel server. Ogni stanza avrà un proprio id, e idem per gli utenti.
Se stanze e utenti sono entità "stabili", cioè permanenti nel sistema / db, avranno quindi un loro ben preciso id associato, e quindi lasciamo perdere il concetto di sessione. La sessione serve a identifica e gestire un utente, i cui dati reali (incluso l'id) sono memorizzati nel db e non accessibili dall'esterno.
Sì, AJAX.
Dopo vediamo il concetto di broadcast, ma ci siamo.
Sì, sempre AJAX. Ci sarà un timer che si sveglia ogni tanto (ogni secondo, ad esempio), e che fa polling sul server (sempre tramite AJAX), prelevando l'elenco dei messaggi nuovi rispetto all'ultima interrogazione.
Basta rimuovere gli utenti man mano che vanno via. Quando non ce ne sarà nessuno, la tabella sarà vuota (e quindi, di fatto, sparisce anche la stanza).
All'incirca sì.
Puoi usare un db NoSQL per gestire i messaggi, e scalare / distribuire il carico di lavoro.
L'ideale, a mio avviso, è tenere un db tradizionale (SQL) per memorizzare le informazioni "stabili" (gli utenti, le stanze, e le loro informazioni, inclusi gli id), che rendono semplice la loro gestione.
Mentre per quelle "aleatorie", come l'elenco dei (nuovi) messaggi, si memorizzano in una piattaforma NoSQL.
Il server pescherà dall'una e/o dall'altra piattaforma a seconda di quello che gli server. Un po' di caching, poi, sarebbe ottimale, in modo da ridurre il carico sul db.
In Python ci sono librerie per gestire il protocollo JSON-RPC, molto usato e comodo per questi casi.
Personalmente ho smanettato con apache + mod_wsgi per implementare un server JSON-RPC. Ho realizzato anche un moduletto per gestire in maniera comoda il tutto, in modo da ridurre il codice delle API alla sola "business logic".
Potresti fare qualcosa del genere anche tu. E' molto più semplice di quello che si possa pensare.
Francamente non saprei. Se conosci già come metter sù un server web, il passo è breve per realizzare quanto chiedi. Ovviamente roba come caching richiede più lavoro, ma inizialmente a te interessa che il server funzioni; pensare a come ottimizzarlo c'è tempo.
