Gibt es eine vorhandene Lösung, die die Anwesenheitsverwaltung für eine Chat-App auf Basis von Strophe.js bereitstellt?
Ich habe eine einfache Chat-Anwendung basierend auf Strophe.js. Ich möchte nur die Benutzer zeigen, die online sind und dynamisch die Liste ändern. Ich habe mich gefragt, ob es eine vorhandene Lösung (möglicherweise Strophe-Plugin) gibt, die dies behandelt. Wenn es so etwas nicht gibt, was ist der beste / einfachste Weg, es zu implementieren?
Wenn Sie Strophe verwenden, können Sie einfach einen IQ an Ihren Server senden, der wie folgt nach Ihrer Dienstliste fragt:
%Vor%Dies würde Ihren Server nach Ihren Dienstplänen abfragen und würde ein Objekt zurückgeben, das Ihre Dienstplanliste enthält. Sie können dann Ihre Listen wie folgt durchlaufen:
%Vor% Beachten Sie, dass ich einen on_presence
Callback und connection.send($pres())
hinzugefügt habe. Der Zweck ist, dass Sie Updates von Ihren Kontakten erhalten können, wenn sich deren Anwesenheit ändert. Ihr Anwesenheitsrückruf wird dann so aussehen:
Sie können die
Hoffe, das hilft!
Bearbeiten:
Verzeih mir, ich habe einen Fehler gemacht.$(presence).attr('type')
gibt Ihnen nicht, ob der Kontakt online ist oder nicht, aber es gibt Ihnen den Anwesenheitstyp. Der Anwesenheitstyp ist eigentlich das Signal, das Ihnen sagt, ob ein Kontakt, wenn er nicht verfügbar ist oder wenn Sie abonniert oder abgemeldet sind, an Ihren Kontakt weitergeleitet wird.
In der XMPP-Dokumentation :
2.2.1. Arten der Präsenz
Das Attribut 'type' einer Presence-Zeilengruppe ist OPTIONAL. Eine Präsenz Zeilengruppe, die kein Attribut 'Typ' besitzt, wird verwendet, um zu signalisieren der Server, auf dem der Absender online ist und für die Kommunikation verfügbar ist. Wenn das Attribut 'type' eingeschlossen ist, gibt es einen Mangel an Verfügbarkeit an, a Anfrage zur Verwaltung eines Abonnements für die Anwesenheit eines anderen Unternehmens, a Abfrage der aktuellen Anwesenheit einer anderen Entität oder eines Fehlers in Bezug auf eine zuvor gesendete Anwesenheitsstanzzeile. Wenn enthalten, das Attribut 'type' MUSS einen der folgenden Werte haben:
- nicht verfügbar - Zeigt an, dass die Entität nicht mehr verfügbar ist Kommunikation.
- subscribe - Der Sender möchte den Newsletter abonnieren Anwesenheit des Empfängers.
- abonniert - Der Absender hat das erlaubt Empfänger, um ihre Anwesenheit zu erhalten.
- Abmelden - Der Absender ist Abmeldung von der Anwesenheit einer anderen Entität.
- abgemeldet - Der Abonnementanfrage wurde abgelehnt oder zuvor erteilt Abonnement wurde storniert. usw. ...
Es ist $(presence).find("show")
gibt Ihnen den Status Ihres Kontakts. Aus der Dokumentation:
2.2.2.1. Zeigen Sie
anDas OPTIONAL-Element enthält nicht-menschenlesbare XML-Zeichen Daten, die den jeweiligen Verfügbarkeitsstatus einer Entität angeben oder spezifische Ressource. Eine Präsenz-Strophe darf NICHT mehr als eine enthalten Element. Das Element darf KEINE Attribute besitzen. Falls angegeben, muss der XML-Zeichendatenwert einer der folgenden Werte sein (Zusätzliche Verfügbarkeitstypen könnten über a definiert werden richtig-namespaced Kindelement der Anwesenheitsstrophe):
- away - Die Entität oder Ressource ist vorübergehend nicht erreichbar.
- chat - Die Entität oder Ressource ist aktiv am Chatten interessiert.
- dnd - Die Entität oder Ressource ist beschäftigt (dnd="Nicht stören").
- xa - Die Entität oder Ressource ist für einen längeren Zeitraum nicht verfügbar (xa="eXtended Away").
Wenn kein show-Element bereitgestellt wird, wird angenommen, dass die Entität online ist und verfügbar.
Eine wichtige Sache zu beachten ist, dass als Ist es richtig, dass Strophe.addHandler nur den ersten Knoten von der Antwort liest? sagte: Wenn Sie mehr als nur den ersten Präsenzknoten lesen wollen, stellen Sie sicher, dass Sie am Ende" true "zurückgeben, denn:" Der Handler sollte true zurückgeben, wenn er erneut aufgerufen werden soll. Wenn Sie false zurückgeben, wird der Handler nach der Rückkehr entfernt. "
Also sollte die Lösung, die ich verwendet habe, ungefähr so aussehen:
%Vor%Tags und Links javascript xmpp strophe