View Single Post
Old 28-03-2013, 13:17   #4
ingframin
Senior Member
 
L'Avatar di ingframin
 
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
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.
Oh che bello, non sono lontano dal concetto.
In realta' la curiosita' mi e' venuta pensando a un browser game e a come fosse possibile implementarlo.
Non mi mettero' di certo a farlo pero' la curiosita' di capire era troppa.
Certo che usare 2 db (uno SQL e uno NoSQL) e' un po' complesso(?)... o forse piu' costoso (noleggio di 2 db diversi) che complesso.
Secondo te sarebbe possibile fare una cosa del genere su un servizio come webfaction?
Intendo senza mettere in piedi il server io stesso.
Oppure serve un VPS?
Non credo lo mettero' mai on line ma mi sa che questo weekend lungo di pasqua provo a farlo sul mio pc
Grazie delle info!
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
ingframin è offline   Rispondi citando il messaggio o parte di esso