Abbiamo un sito e abbiamo sviluppato un sistema di chat utilizzando la libreria strophe.js e il server XMPP ejabberd. Usiamo l'allegato di sessione che è stato avviato con PHP (utilizzando una libreria interna). Quello che facciamo è ottenere il RID e il SID dallo script PHP, quindi utilizzare l'allegato alla sessione di strophe. Il suddetto RID e SID sono memorizzati su un cookie e il valore RID sul cookie viene aggiornato ogni aggiornamento del RID su strophe.js. (In questo modo riusciamo a riutilizzare l'ID di sessione all'aggiornamento/navigazione della pagina in altri punti del sito)Web chat XMPP: come risolvere più schede/finestre?
Ora pianifichiamo di farlo funzionare su più schede/finestre. Ho osservato l'implementazione di Facebook e per ogni scheda è presente una lunga richiesta di polling su un determinato dominio. Questo dominio è diverso per ogni scheda. Ad esempio, la scheda uno sarebbe 0.86.channel.facebook.com. La seconda scheda sarebbe 1.86.channel.facebook.com. A quanto mi risulta, risolverà la limitazione del browser di 2 richieste attive a un determinato dominio. Come viene implementata questa soluzione per più domini?
Avanti sarebbe nelle sessioni di chat stessa. Le sessioni di chat sarebbero diverse per scheda, giusto? Come sarebbe sincronizzata l'interfaccia utente con ogni scheda come Facebook? La mia idea è, per ogni azione, che un messaggio venga inviato al JID dell'utente contenente l'azione eseguita relativa alla chat. Ad esempio, l'apertura di una finestra di chat avrebbe mandato un messaggio di righe come questa:
<message from="my_own_jid" to="my_own_jid" type="chat">
<body>{"jid-of-contact":"open-chat-box"}</body>
</message>
e questo sarebbe preso sul client di chat e l'interfaccia utente sarebbe stato modificato di conseguenza (in questo caso, l'apertura di una finestra di chat per un contatto).
Eventuali suggerimenti/commenti su questa implementazione?
Grazie!
Su più domini: un dominio diverso potrebbe semplicemente essere una richiesta di reindirizzamento da domini diversi sul server XMPP che utilizzano. Potrebbe essere solo un "travestimento" dal lato del browser. In termini di come accedere alla stessa risorsa con un singolo nome utente, hmm, mi chiedo se FB ha implementato/modificato il server XMPP che usano per ottenere questo. Sarebbe interessante sapere. – DashK
Per mantenere l'aspetto dell'interfaccia utente in più schede: mi chiedo se è possibile utilizzare l'archivio dati di HTML5 per mantenere lo "stato" della chat e avere ogni scheda solo ... risposta agli aggiornamenti nell'archivio dati? In base alle specifiche XMPP, dovresti essere in grado di utilizzare la priorità delle risorse per "controllare" dove verranno inviate le stanze dei messaggi. Mi chiedo se puoi sfruttarlo per ottenere il tuo effetto tabulazione multiplo ... – DashK
@DashKAre accedono alla stessa risorsa? Penso che sia una sessione diversa e ognuna con una risorsa diversa. In questo modo non è necessario modificare il server XMPP (e fare più log in per lo stesso utente con la stessa risorsa è contro lo standard XMPP, giusto?). – putolaruan