Aktivieren und Konfigurieren der PubNub-Präsenz
Published: 2024-05-14 07:08:26

Wie können Sie erkennen, wann ein Benutzer online oder offline geht, oder wie wissen Sie, ob ein Client-Gerät verbunden ist und wann es die Verbindung trennt? Mit PubNub Presence können Sie in Echtzeit verfolgen, wer mit Ihren Kanälen verbunden ist, und Sie werden benachrichtigt, wenn sich der Verbindungsstatus ändert.

  
[![Embedded YouTube Video](https://img.youtube.com/vi/YGrrFUlO_Ys/0.jpg)](https://www.youtube.com/watch?v=YGrrFUlO_Ys)  
[Sehen Sie sich das Video an](https://www.youtube.com/watch?v=YGrrFUlO_Ys)

Das Presence-System ist sehr flexibel und ermöglicht unter anderem folgende Anwendungsfälle:

-   Überwachen, wann Benutzer einer Chat-Konversation beitreten oder sie verlassen
-   Erkennen, wann ein Benutzer online oder offline ist
-   Feststellen, ob ein IoT-Gerät verbunden und verfügbar ist
-   Zählen, wie viele Clients mit einem Kanal verbunden sind (Kanalbelegungszählung)

Sie können auch einige Statusinformationen (Metadaten) definieren, die die Präsenz des Clients begleiten und von allen interessierten Empfängern empfangen werden; zum Beispiel kann der Benutzer, obwohl die Präsenz des Clients "online" ist, seinen benutzerdefinierten Status als "abwesend" oder "nicht stören" festlegen.

Um die PubNub-Präsenz zu aktivieren, loggen Sie sich in das [Admin-Portal](https://admin.pubnub.com?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) ein, navigieren Sie zu der App und dem Keyset, für das Sie die Präsenz aktivieren möchten, und schalten Sie den Präsenz-Schalter im Konfigurationsbildschirm des Keysets um:

![Portal Configuration: Presence Enable](https://www.pubnub.com/cdn/3prze68gbwl1/7oSeiiPIy15BnZhVsZ3FsB/840c751c9826f614a75e00537e5d7967/portal_-_presence_on.png)

Sie werden aufgefordert, zu bestätigen, dass Sie die Anwesenheit aktivieren möchten.

> Beachten Sie, dass die Aktivierung der Anwesenheit zu deutlich mehr Transaktionen führen kann, insbesondere für diejenigen, die einen transaktionsbasierten Tarif nutzen. Um die Anzahl der Transaktionen zu kontrollieren, können Sie die Funktion "Anwesenheitsverwaltung" verwenden, die weiter unten in diesem Artikel erläutert wird.

![Portal Configuration: Presence Enable Confirm](https://www.pubnub.com/cdn/3prze68gbwl1/5DOhGhHU4bj028AJecCu83/bacca2c768b2cf2fe25294adf73acdec/portal_-_presence_enable.png)

Achten Sie darauf, alle Änderungen zu speichern, wenn Sie die Konfiguration Ihres Keysets ändern.

![Portal Configuration: Presence Confirm Changes](https://www.pubnub.com/cdn/3prze68gbwl1/2o4Ftz7WJeD3QA8TWPu9do/09c679b6e94617a702d0095b87d911c4/portal_-_save_changes.png)

Durchsage-Modus
---------------

Wenn diese Funktion aktiviert ist, erzeugt PubNub automatisch Präsenzereignisse, wenn sich Clients (Benutzer oder Geräte) bei einem Kanal anmelden oder abmelden.

Wenn ein Client einen Channel abonniert, wird ein `Join-Event` erzeugt:

```
{ "channel": "<Name des Channels, dem beigetreten wurde>", "action": "join", "occupancy": 2, // Kanalbelegung "uuid": "<Benutzerkennung des Clients, der beigetreten ist>", "timetoken": "<Wann der Beitritt erfolgte>" }
```

Wenn sich ein Kunde von einem Kanal abmeldet, wird ein `Leave-Ereignis` erzeugt:

```
{ "channel": "<Name des Channels, der verlassen wurde>", "action": "leave", "occupancy": 1, // Kanalbelegung "uuid": "<Benutzerkennung des Kunden, der gegangen ist>", "timetoken": "<Zeitpunkt des Verlassens>" }
```

Nehmen wir an, ein Web-Client ist mit einem Kanal verbunden und der Benutzer schließt zwangsweise die Registerkarte, anstatt dem Client zu erlauben, sich abzumelden:

Wenn der Client sich nicht explizit abmeldet, sondern nach einer gewissen Zeit (standardmäßig 300 Sekunden) als nicht anwesend erkannt wird, wird ein `Timeout-Ereignis` ausgelöst:

```
{ "channel": "<Name der Kanalverbindung, bei der die Zeit abgelaufen ist>", "action": "timeout", "occupancy":1, // Channel occupancy "uuid": "<Benutzerkennung des Clients, der die Zeitüberschreitung verursacht hat>", "timetoken": "<Wann die Zeitüberschreitung auftrat>" }
```

### Leave bei TCP FIN oder RST generieren

Anstatt auf das Timeout-Ereignis im obigen Szenario zu warten, besteht eine weitere Möglichkeit darin, auf Netzwerkebene zu erkennen, wann ein Client den Kanal verlässt. Durch Aktivieren der Option "Generate Leave on TCP FIN or RST" auf dem Keyset wird beim gewaltsamen Schließen der Browser-Registerkarte in diesem Szenario nun ein `Leave-Ereignis` erzeugt, das sofort ausgelöst wird, anstatt eines `Timeout-Ereignisses`.

![Portal Configuration: Presence Generate Leave TCP FIN RST](https://www.pubnub.com/cdn/3prze68gbwl1/5wwJWjGkGOs9R0WFWsJgIu/b95da340d8265dab8edc83f69d94e348/portal_-_generate_leave_on_tcp_fin_or_rst.png)

### Entprellung

Manchmal `treten` Clients schnell in Kanäle ein und `verlassen diese` wieder, entweder aufgrund von Netzwerkproblemen oder aufgrund des Designs Ihrer Anwendung. Um übermäßige `Join-` und `Leave-Ereignisse` zu vermeiden, geben Sie einen `Entprellungswert` in Sekunden an. Nachdem ein Client ein `Join-Ereignis` erzeugt hat, darf er z. B. für zwei Sekunden kein weiteres `Join-Ereignis` erzeugen.

![Portal Configuration: Presence Debounce](https://www.pubnub.com/cdn/3prze68gbwl1/4j08CDBzBT3UOPoTraPoj4/e713d84db1011937c4c26700bc623e78/portal_-_debounce.png)

Intervall-Modus
---------------

### Maximal ankündigen

Die `Join-` und `Leave-Ereignisse` werden sofort ausgelöst, solange die Anzahl der Clients im Channel unter der Einstellung "Announce Max" bleibt, die standardmäßig 20 beträgt.

![Portal Configuration: Presence Announce Max](https://www.pubnub.com/cdn/3prze68gbwl1/5YNhk0OXtAoi9JYG2TpN3H/3ad226821767b7e806f8867806b83e1a/portal_-_announce_max.png)

Wenn die Anzahl der Teilnehmer in einem Channel steigt, nimmt auch die Anzahl der `Join-` und `Leave-Ereignisse` zu, aber ab einem gewissen Punkt wird es für einen Client überflüssig, alle diese Ereignisse in Echtzeit zu verwalten. Nehmen wir einen Gruppenchat mit 200 Teilnehmern: Muss der Client den Online-Status jedes einzelnen Teilnehmers aktualisieren, wenn dieser online oder offline geht? Das wären mehr Informationen, als ein menschlicher Benutzer im Auge behalten könnte.

Sie können `Announce Max` zwischen 1 und 100 konfigurieren. **Sobald die Anzahl der Clients in einem Kanal "Announce Max" übersteigt, werden die `Join-,` `Leave-` und `Timeout-Ereignisse` nicht mehr erzeugt, sondern durch das `Intervall-Ereignis` ersetzt**:

```
{ "channel: "<Name des Kanals, für den das Ereignis gilt>", "action": "interval", "occupancy": 4, // Kanalbelegung "timetoken": "<Wann ist das Intervallereignis eingetreten>" }
```

### Intervall

Sie können konfigurieren, wie oft das Intervallereignis ausgelöst wird, indem Sie die Konfigurationsoption `Intervall` ändern. Es sind Werte zwischen 10 Sekunden und 300 Sekunden (5 Minuten) zulässig.

![Portal Configuration: Presence Interval](https://www.pubnub.com/cdn/3prze68gbwl1/6c0nFLx1IzyRD4ky0xoixt/06b7ec3a799b8b15a07e2902019ab7d7/portal_-_interval.png)

Das `Intervall-Ereignis` meldet nur die Kanalbelegung, es sei denn, Sie aktivieren "Presence Deltas".

### Anwesenheits-Deltas

![Portal Configuration: Presence Deltas](https://www.pubnub.com/cdn/3prze68gbwl1/13VfH53S8l6KdQ8ap18PUp/0f843d5a9eb2e7cf40fd8c0e51b36d6f/portal_-_presence_deltas_on.png)

Wenn Sie "Präsenz-Deltas" aktivieren, enthält das `Intervall-Ereignis` auch Informationen darüber, welche Benutzer dem Kanal seit dem vorherigen `Intervall-Ereignis` beigetreten sind oder ihn verlassen haben.

```
{ "channel": "<Name des Kanals, für den das Ereignis gilt>", "action": "interval", "occupancy": 3, // Kanalbelegung "join": ["member4"], "leave": ["member3"], "timetoken": "<Wann das Intervallereignis eintrat>" }
```

Andere Einstellungen
--------------------

### Aktiver Benachrichtigungskanal

Möglicherweise interessiert es Sie nicht, wie viele Clients mit einem Channel verbunden sind oder wer diese Clients sind, sondern nur, ob jemand einen Channel abonniert hat oder nicht. Wenn ein Channel 0 Abonnenten hat, wird er als `inaktiv` betrachtet. Ein Kanal mit 1 oder mehr Abonnenten gilt als `aktiv`.

Sie können sich registrieren lassen, um eine Benachrichtigung zu erhalten, wenn ein Kanal "aktiv" oder "inaktiv" wird, indem Sie einen "Aktiven Benachrichtigungskanal" angeben.

![Portal Configuration: Presence Active Notice Channel](https://www.pubnub.com/cdn/3prze68gbwl1/41uqM2t7RZbv7OhYQ0Sdnp/5a7bc69d5bfc4d0c35be69e8f99b1448/portal_-_active_notice_channel_populated.png)

Wenn Sie diesen angeben, erhalten Sie Nachrichten auf diesem Kanal (in diesem Beispiel ist der Name des Kanals, der die Nachrichten erhält, "notice\_channel"):

```
{ "channel": "<Name des Kanals, der aktiv oder inaktiv geworden ist>", "status": "active", // oder inactive "precise_timestamp": "<Wann das Intervallereignis eingetreten ist>" }
```

Beachten Sie, dass `aktive` Ereignisse gesendet werden, sobald die Kanalbelegung den Wert 0 überschreitet, während `inaktive` Ereignisse nur dann ausgelöst werden, wenn der Kanal 300 Sekunden lang oder länger den Wert 0 aufweist.

### Stream-Filterung

Die Option zur Deaktivierung der Stream-Filterung wird aus Legacy-Gründen beibehalten, und Entwickler haben wenig Nutzen davon, diese Einstellung zu deaktivieren. Die Stream-Filterung fügt Präsenz-Metadaten in Ereignisse ein, die in den Präsenz-Kanälen veröffentlicht werden, so dass [Client-Filter](https://www.pubnub.com/docs/general/channels/subscribe#message-filters?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) auf diese Präsenz-Ereignisse angewendet werden können. Die Deaktivierung der Stream-Filterung verringert nicht die Anzahl der Präsenzereignisse; sie ermöglicht es dem Client lediglich, herauszufiltern, welche Ereignisse er erhält - um die Anzahl der Präsenzereignisse zu verringern, sollten Sie die Präsenzverwaltung verwenden, die weiter unten in diesem Artikel erläutert wird.

![Portal Configuration: Presence Stream Filtering](https://www.pubnub.com/cdn/3prze68gbwl1/7MVxG7hUQ8T8txFn8ceil2/b7239d86329c74585defe51e15dbb855/portal_-_stream_filtering.png)

### Webhooks

Zuvor konnten Sie auf der Konfigurationsseite des Schlüsselsatzes mehrere Webhooks angeben, die beim Auftreten eines der folgenden Ereignisse ausgelöst werden sollten:

-   `Beitrittsereignis` ausgelöst
-   Ereignis "`Verlassen"` abgefeuert
-   `Timeout-Ereignis` abgefeuert
-   `Intervall-Ereignis` abgefeuert
-   `Statusänderungsereignis` abgefeuert
-   Ereignis "`Kanal aktiv"` oder " `Kanal inaktiv"` abgefeuert.

Diese Webhooks sind nicht mehr Teil der Keyset-Konfiguration, sondern wurden in die Funktion "Events & Actions" migriert. Webhooks werden in diesem Artikel nicht behandelt, aber weitere Informationen finden Sie im Abschnitt [Webhook-Payload-Aktion](https://www.pubnub.com/docs/serverless/events-and-actions/events#webhook-payload?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) in der Dokumentation zu Events & Actions.

Statusänderung
--------------

Wenn Sie einige Metadaten im Zusammenhang mit der Anwesenheit des Clients austauschen möchten, ist dies am besten mit der Funktion Anwesenheitsstatus möglich. Obwohl die zuvor besprochenen `Join-` und `Leave-Ereignisse` Ihnen beispielsweise mitteilen, ob der Client online oder offline ist, erfahren Sie dadurch nicht, ob der Benutzer "beschäftigt" oder "nicht stören" ist.

Ein Client kann das PubNub SDK verwenden, um einen benutzerdefinierten Status für einen bestimmten `Kanal` oder eine `Kanalgruppe` zu setzen. Einmal gesetzt, wird dieser Status an andere Clients weitergegeben und als `Statusänderungsereignis` empfangen.

```
{ "channel": "<Name des mit der Zustandsänderung verbundenen Kanals>", "uuid": "<ID des Clients, für den der Zustand gilt>", "action": "state-change", "state": {<JSON-Objekt, das den Zustand definiert>} "occupancy": 3, // Kanalbelegung "timetoken": "<Wann die Zustandsänderung stattfand>" }
```

Die Zustandsänderung ist sehr flexibel und kann für den Austausch beliebiger serialisierbarer Daten verwendet werden. Unsere Demo für die Zusammenarbeit verwendet beispielsweise den Präsenzzustand, um Zuhörer zu benachrichtigen, wenn ein `Zeichnungsereignis` eintritt, so dass eine Anwendung für kollaboratives Zeichnen möglich ist, bei der die Kritzeleien allen Betrachtern in Echtzeit angezeigt werden

```
"state": {"x": 5, "y": 10, "color": "#FFFF00"}  // Beispiel für einen Status für eine Zeichenanwendung
```

Der**einzige Nachteil von Zustandsänderungsereignissen ist, dass sie nicht dauerhaft sind**. Sie sollten daher nur für flüchtige Daten oder Daten, die jeder Client verfolgen soll, verwendet werden.

Steuern, welche Ereignisse Sie mit der Präsenzverwaltung erhalten
-----------------------------------------------------------------

Wie bereits erwähnt, kann die Anzahl der Präsenzereignisse mit zunehmender Benutzerzahl schnell sehr groß werden. Um Ihnen eine bessere Kontrolle darüber zu geben, welche Ereignisse auf einem bestimmten Kanal ausgelöst werden, haben wir das Self-Service-Tool "Präsenzmanagement" eingeführt, mit dem Sie Regeln erstellen können, die steuern, welche Präsenzereignisse ausgelöst werden:

Das Präsenzmanagement-Tool kann über die entsprechende Schaltfläche auf dem Konfigurationsbildschirm des Keysets aufgerufen werden:

![Portal Configuration: Presence Management](https://www.pubnub.com/cdn/3prze68gbwl1/3L5SZ54NPceHIcBn0hRDIg/9fd5c24690e40a9a05d616acb0900d6d/portal_-_presence_management.png)

Sie können das Tool auch über das linke Menü unter dem Abschnitt "BizOps Workspace" aufrufen.

Eine vollständige Beschreibung der Konfiguration Ihrer Verwaltungsregeln finden Sie in der [Dokumentation zur Anwesenheitsverwaltung](https://www.pubnub.com/docs/bizops-workspace/presence-management?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de):

1.  Erstellen Sie eine neue Regel; Sie können mehrere Regeln erstellen, um die Präsenzereignisse, die Sie für Ihre Anwendung auslösen möchten, vollständig zu definieren.
2.  Geben Sie die Ereignisse an, die diese Regel steuern soll, einschließlich `Beitritt,` `Austritt,` `Zeitüberschreitung,` `Statusänderung` und `Intervall.` In diesem Artikel wurde bereits beschrieben, was diese Regeln sind und wann sie ausgelöst werden.
3.  Geben Sie ein Platzhaltermuster an, um den Channel oder die Channel-Gruppen zu definieren, für die diese Regel gilt; zum Beispiel gilt `personal-*` für alle Channels, die mit `personal-` beginnen.
4.  Klicken Sie auf "Erstellen" und legen Sie die Reihenfolge fest, in der Ihre Regeln gelten sollen.

Präsenzmanagement über die PubNub-API
-------------------------------------

Sie können Präsenzereignisse über jedes unserer SDKs empfangen. Dieser Artikel konzentriert sich hauptsächlich auf Präsenz-Ereignisse, die über den SDK-Ereignis-Listener empfangen werden, aber unsere APIs unterstützen auch zusätzliche Funktionen, um festzustellen, wer in einem bestimmten Kanal zuhört`(here now`) und wo ein bestimmter Benutzer abonniert ist`(where now`)

In JavaScript kann die [hereNow-API](https://www.pubnub.com/docs/sdks/javascript/api-reference/presence?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) wie folgt aufgerufen werden, um festzustellen, wer bei dem angegebenen Kanal abonniert ist:

```js
try {
  const result = await pubnub.hereNow({
    channels: ["my_channel"],
    includeState: true,
    includeUUIDs: true
  });
  console.log(“total occupancy: “ + result.totalOccupancy)
} catch (status) {
  console.log(status);
}
```

Weitere Ressourcen
------------------

Presence ist eine der wertvollsten und flexibelsten Funktionen der PubNub-Plattform. Genau zu wissen, wer online ist und diesen Status in Echtzeit zu aktualisieren, hat unseren Kunden im Laufe der Jahre die Entwicklung einiger faszinierender Lösungen ermöglicht.

-   Unsere [Presence Basics](https://www.pubnub.com/docs/general/presence/overview?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) Dokumentation ist ein guter Ausgangspunkt, um die Konzepte von Presence zu verstehen.
-   Unsere [Subscribe-Dokumentation](https://www.pubnub.com/docs/general/channels/subscribe?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) zeigt anhand von Beispielen, wie ein Kanal mit aktivierter `Präsenz` abonniert werden kann, und verweist auf die SDK-spezifische Dokumentation für API-Beispiele, die zeigen, wie ein Listener-Callback für Präsenzereignisse hinzugefügt werden kann (z. B. [diese Seite](https://www.pubnub.com/docs/sdks/javascript/api-reference/publish-and-subscribe#add-listeners?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) für unser JavaScript-SDK).
-   Ein guter Startpunkt für neue Entwickler ist das [Tutorial Erste Schritte](https://www.pubnub.com/tutorials/getting-started-chat-sdk/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de), das verschiedene Programmiersprachen abdeckt. In den Tutorials werden auch andere Presence-Funktionen behandelt, z. B. die "Here Now"-API, mit der festgestellt werden kann, wer einem Kanal zuhört.

Wenn Sie Hilfe oder Unterstützung benötigen, wenden Sie sich bitte an unser [Pubnub-Supportteam](https://support.pubnub.com/hc/en-us?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) oder schreiben Sie eine E-Mail an unser Developer Relations Team unter [devrel@pubnub.com](mailto:devrel@pubnub.com).

Wie kann PubNub Ihnen helfen?
=============================

Dieser Artikel wurde ursprünglich auf [PubNub.com](https://www.pubnub.com/how-to/admin-portal-presence/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) veröffentlicht.

Unsere Plattform hilft Entwicklern bei der Erstellung, Bereitstellung und Verwaltung von Echtzeit-Interaktivität für Webanwendungen, mobile Anwendungen und IoT-Geräte.

Die Grundlage unserer Plattform ist das größte und am besten skalierbare Echtzeit-Edge-Messaging-Netzwerk der Branche. Mit über 15 Points-of-Presence weltweit, die 800 Millionen monatlich aktive Nutzer unterstützen, und einer Zuverlässigkeit von 99,999 % müssen Sie sich keine Sorgen über Ausfälle, Gleichzeitigkeitsgrenzen oder Latenzprobleme aufgrund von Verkehrsspitzen machen.

PubNub erleben
--------------

Sehen Sie sich die [Live Tour](https://www.pubnub.com/tour/introduction/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) an, um in weniger als 5 Minuten die grundlegenden Konzepte hinter jeder PubNub-gestützten App zu verstehen

Einrichten
----------

Melden Sie sich für einen [PubNub-Account](https://admin.pubnub.com/signup/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) an und erhalten Sie sofort kostenlosen Zugang zu den PubNub-Schlüsseln

Beginnen Sie
------------

Mit den [PubNub-Dokumenten](https://www.pubnub.com/docs?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de) können Sie sofort loslegen, unabhängig von Ihrem Anwendungsfall oder [SDK](https://www.pubnub.com/docs?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=de)