Purtroppo non riesco ad identificare un controllo abbastanza intelligente.
ogni coppia di utenti (ha una sua tabella su db).
Quando 1 apre la chat sul database scrivo:
id:1-->{'status':'online', 'tabella_della_chat':id_table, 'incoming_message' : false}
Quando 2 scrive ad 1 controllo :
se 1 è online,se 1 è sincronizzato sulla tabella, allora scrivo il messaggio e :
id:1-->{'status':'online', 'tabella_della_chat':id_table, 'incoming_message' : true}
Adesso 1 che è in ascolto su incoming message vede che ha dei messaggi e va a prendersi tutti i messaggi non letti e riporta incoming_message:false.
Se pero' ho due schermate della stessa pagina con chat iniziallizata, il primo processo che va a prendersi il messaggio riporta incoming_message a false e l'altra pagina non vede piu' messaggi.