2010-11-23 10 views
5

Wenn ein Benutzer einem ejabberd MUC beitritt, sendet der Server dem Benutzer einen vollständigen Raum-Roster und Chat-Verlauf.Erneutes Anfordern des Zimmer-Roster und des Verlaufs von einem muc in ejabberd

In meinem webbasierten Client muss ich den Raum über die Seite neu laden. Mein Problem ist, dass ich beim Entladen der Seite die ersten Informationen verliere.

ATM Ich arbeite daran, indem ich den Dienstplan und die Raumhistorie zu json serialisiere und in einem Cookie abspeichere. Dies ist jedoch eine wirklich schlechte Idee (tm), da ich sehr schnell die 4k allgemeine Cookie-Grenze für Räume mit vielen Benutzern überschreiten kann.

So die Frage: Wie kann ich die Informationen erneut anfordern, die der Server einem Benutzer bei Join sendet, ohne tatsächlich eine MUC erneut zu verbinden?

Ein Ansatz für Dienstpläne wäre, eine Abfrage iq mit einem Namespace von "http://jabber.org/protocol/disco#items" zu senden, aber dies ist unvollständig, da es keine Präsenzinformationen oder irgendwelche erweiterten Informationen bereitstellt info (z. B. echte jids für nicht anonyme Räume)

Antwort

0

Versuchen Sie, den Schleimraum zu verlassen, wenn die Seite entladen wird, und senden Sie erneut Präsenz an den Muc, wenn die Seite neu geladen wird. Senden „Präsenz verfügbar“ plus „Geschichte“ Anfrage

+0

"ohne tatsächlich wieder ein MUC" war das wichtige Bit, das Sie dort verpasst haben. Wenn ich den Raum beim erneuten Laden der Seite verlasse, wird jeder Benutzer als solcher benachrichtigt und dann erneut benachrichtigt, wenn der Benutzer sich wieder anmeldet. Dadurch wird der Punkt, an dem die Sitzung wieder aufgenommen wird, nicht erfolgreich abgeschlossen. –

+0

Ja ... du hast Recht! Das war der schnelle Weg, um das zu erreichen, was Sie wollen. Wahrscheinlich ist die einzige saubere Lösung, ejabberd zu modifizieren, um Geschichte und Dienstplan nach jeder Benutzerpräsenz auf einem Muc zu senden. Genießen! – pincopallo

1

Auf Seite entladen Sie senden müssen „Präsenz nicht verfügbar“

Auf Seite Last (auf anzuschließen). Zum Beispiel

<history maxstanzas=20 /> 

Reference to XEP-0045 scheme

1

Hmm. Ich habe keine Lösung für Roster, aber auf der Geschichte, hast du das probiert?

<iq to="[email protected]" type="get"> 
    <history xmlns="http://www.jabber.com/protocol/muc#history" start="1970-01-01T00:00:00Z" direction="forward" count="100" /> 
</iq> 
Verwandte Themen