Wie kann der Gruppenchatraum (Group Chat Room, MUC) die ganze Zeit über bestehen, auch wenn er nicht mit dem XMPP-Server verbunden ist?

Ich entwickle ein Sofortnachrichtenmodul (Teil der J2EE-Web-App) mit openfire / jsjac innerhalb des XMPP-Protokolls (Jabber).

Die OpenFire-Benutzer- / Gruppenverwaltung / -Tabellen wurden in unsere Geschäftsdatenbanktabellen umgeleitet, was bedeutet, dass ich Benutzer / Gruppen nicht mehr in OpenFire verwalten muss. Alle Benutzer / Gruppen-Beziehungen wurden in der Geschäftsdatenbank festgelegt.

Unten ist das Bild, das ich je nach Anforderung über das Hauptfenster zeichne. Aufgrund meiner schlechten Reputation kann ich kein Bild veröffentlichen. Daher schreibe ich eine URL für das Bild meiner Instant Message-Hauptbenutzeroberfläche. Entschuldigen Sie die Unannehmlichkeiten.Instant Message Haupt-UI-Image

Ihr könnt sehen, dass es im linken Bereich keine Benutzer- / Gruppenliste gibt. Es gibt Sitzungen, die nach dem Verlauf gespeichert sind und die mich verwirren, insbesondere über Gruppen. Ich habe den "XEP-0045: Multi-User Chat" von XMPP.org gelesen. Ich kenne den allgemeinen Workflow zum Gruppenchat:XEP-0045: Mehrbenutzer-Chat "

Erstellen Sie den Raum, produzieren Sie das roomJid.Konfigurieren Sie den Raum. (Reservierter Raum)Holen Sie sich usersjid aus der Geschäftsdatenbank und binden Sie Benutzer an den neu erstellten Raum.Nachricht in den Raum senden.Der Dienst sendet eine Nachricht an alle Gruppenmitglieder.

Und wusste, dass es Zimmertyp gibtanhaltender Raum wird erklärt alsEin Raum, der nicht zerstört wird, wenn der letzte Bewohner den Raum verlässt. Antonyme: Temporäres Zimmer."von doc. Und im selben doc gibt es einige Sätze, die gesagt werden:

Ein Raumbesitzer MUSS in der Lage sein, einen Raum zu zerstören, insbesondere wenn der Raum hartnäckig ist. Der Workflow sieht wie folgt aus:

Der Raumeigentümer fordert die Zerstörung des Raums unter optionaler Angabe eines Grundes und eines alternativen Veranstaltungsortes an.Der Raum entfernt alle Benutzer aus dem Raum (einschließlich geeigneter Informationen zum alternativen Standort und dem Grund für das Entfernen) und zerstört den Raum, auch wenn er als dauerhaft definiert wurde.

Nachdem ich den obigen Satz gelesen habe, bin ich mehr verwirrt, es gibt mehrere Probleme, die mich immer noch verwirren.

Was ist die Bedeutung von "Insassenausgängen"? Wenn sich ein Insasse vom System abmeldet (offline), bedeutet dies "vorhanden". Und wenn alle Insassen offline sind, bedeutet dies, dass der "beständige Typ" den von uns erstellten Raum bestehen lässt? Also, wo werden die Rauminformationen gespeichert? am offenen Feuer oder woanders?Angenommen, alle Insassen existieren (offline), obwohl dieser erstellte Raum nicht zerstört wurde, wie wäre es mit den verbindlichen Informationen? Ich gehe davon aus, dass einem Benutzer eine Mitgliedschaft vom Eigentümer (Administrator) gewährt wurde. Wenn dieser Benutzer existiert oder offline ist, behält der beständige Raum seine Mitgliedschaftsrolle bei, oder? Mit anderen Worten, solange der Raum nicht zerstört wird, gehen alle Konfigurations- und Bindungsinformationen nicht verloren, oder?Wie wäre es mit der Situation, dass der openfire-Server neu gestartet wird, ob der erstellte Raum und seine Informationen noch vorhanden sind?Wie finde ich den erstellten Raum wieder, wenn sich der Eigentümer erneut anmeldet? durch Speichern der Raum-ID?

Abgesehen von der obigen Frage dachte ich, der Workflow sollte den MUC mit einem ausdauernden Raum realisieren. Würdest du das bitte überprüfen und sehen, welches Problem in der Strömung bestand?

Mein Workflow für den MUC mit ausdauerndem Raum

Der Eigentümer sendet ein Anwesenheitsobjekt an den Server, um den Raum zu erstellen, und gibt die Raum-JID sowie die Raum-ID an.Der Eigentümer sendet ein IQ-Objekt an den Server, um den erstellten Raum zu konfigurieren und den Raumtyp als "beständig" festzulegen.Der Eigentümer sendet ein IQ-Objekt, um anderen Benutzern die Mitgliedschaftsrolle zu erteilen. (Bindungsinformationen)Der Eigentümer sendet das Objekt message an ROOM jid und ROOM jid leitet die gesamte Nachricht an seine gebundenen Mitglieder weiter.Gemeinsame Mitglieder dieses Raumes bearbeiten die Nachricht (empfangen) und erhalten den Raum jid undRaum-ID (Ich hoffe, dass alle Benutzer, einschließlich des Besitzers, diese Raum-ID verwenden können, um den Raum wiederzufinden, wenn sie sich neu anmelden.)

Unabhängig von der Rolle des Eigentümers oder des gemeinsamen Mitglieds, wie kann der erstellte Raum anhand der Raum-ID oder der Raum-ID wiedergefunden und verbunden werden, vorausgesetzt, der Raumtyp ist "beständig"?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage