Behandlung der Anwesenheit in einer auf Strophe.js basierenden Chat-Anwendung

8

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?

    
Pavel S. 21.08.2012, 20:58
quelle

2 Antworten

23

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:

%Vor%

Sie können die Dokumentation überprüfen > für weitere Informationen. Mit sendIQ können Sie weitere Parameter wie Fehlerrückrufe usw. hinzufügen.

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

an      

Das 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.

    
Vincent Paca 22.08.2012, 13:56
quelle
4

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%     
RamRovi 23.07.2013 00:31
quelle

Tags und Links