Verwalten der Benutzerkanal-Mitgliedschaft mit dem PubNub Chat SDK
Tags: chatsdk, typescriptsdk, chatjavascript
Published: 2023-12-20 08:05:27

Einführung in das PubNub Chat SDK
---------------------------------

Das PubNub Chat SDK, das für TypeScript- und JavaScript-Anwendungen verfügbar ist, stellt eine Reihe von APIs zur Verfügung, mit denen Sie Ihrer Anwendung mit minimalem Entwicklungsaufwand leistungsstarke und flexible Chat-Funktionen hinzufügen können. Chat-Optionen wie [Zitieren](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/quotes), [Erwähnen von Nutzern](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/mentions), [Channel-Referenzen](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/references), [Threads](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/threads), [Lesebestätigungen](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/read-receipts) und [Tippindikatoren](https://www.pubnub.com/docs/chat/chat-sdk/build/features/typing-indicator) werden vom SDK nativ unterstützt, so dass Sie schnell eine vollwertige App erstellen können.

Bitte lesen Sie unsere [Dokumentation](https://www.pubnub.com/docs/chat/chat-sdk/overview) und unsere [Beispiel-Chat-App](https://www.pubnub.com/docs/chat/chat-sdk/build/sample-chat), um mit dem Chat-SDK zu beginnen. Unser [Tutorial](https://www.pubnub.com/tutorials/chat-sdk/) führt Sie durch die grundlegenden Funktionen des Chat SDK und geht auf einige fortgeschrittene Funktionen ein, während unsere [gehostete Demo](https://www.pubnub.com/demos/chat-sdk-mobile/) das Chat SDK in Aktion zeigt.

Diese Anleitung ist Teil einer **Serie von Beiträgen**, die sich mit einigen der leistungsstärkeren Funktionen des PubNub Chat SDK befassen. Die Serie kann in beliebiger Reihenfolge gelesen werden, aber die Liste der zugehörigen Artikel finden Sie unten:

-   [Wie man die Mitgliedschaft in Benutzerkanälen mit dem Chat SDK verwaltet](https://pubnub.com/how-to/chat-sdk-manage-user-channel-membership/)
-   [Hinzufügen von Reaktionen und Emojis zu Nachrichten mit dem Chat SDK](https://pubnub.com/how-to/chat-sdk-add-reactions-to-messages/)
-   [Erstellen von Threads und Zitaten mit dem Chat SDK](https://pubnub.com/how-to/chat-sdk-create-threads-and-quote-messges/)
-   [Erwähnung von Benutzern und Channels mit dem Chat SDK](https://pubnub.com/how-to/chat-sdk-mention-users/)

Verwalten von Benutzerkanalmitgliedschaften
-------------------------------------------

Das Chat SDK definiert mehrere Typen, die für das Verständnis der Channel-Mitgliedschaft wichtig sind:

-   [Benutzer](https://www.pubnub.com/docs/chat/chat-sdk/learn/chat-entities/user) stellen Einzelpersonen dar, die an einer Unterhaltung teilnehmen.
-   [Channels](https://www.pubnub.com/docs/chat/chat-sdk/learn/chat-entities/channel) stellen eine Konversation zwischen mehreren Benutzern dar. In der Dokumentation wird die Analogie verwendet, dass jeder Kanal einen einzelnen "Chatraum" darstellt. Channels können direkt (d. h. eine 1:1-Konversation zwischen nur zwei Benutzern), als "Gruppe" (d. h. zwischen mehreren namentlich genannten Benutzern) oder "öffentlich" sein.
-   [Mitgliedschaften](https://www.pubnub.com/docs/chat/chat-sdk/learn/chat-entities/membership) stellen eine Beziehung zwischen Benutzern und Kanälen mit optionalen begleitenden Metadaten dar.

In diesem Leitfaden wird beschrieben, wie man diese Channel-Mitgliedschaften erstellt und verwaltet.

### Wie Benutzer einem Channel beitreten

Es gibt mehrere Möglichkeiten, wie ein Benutzer Mitglied eines Channels werden kann. Wenn [direkte](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create#create-direct-channel) oder [Gruppen-Channels](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create#create-group-channel) erstellt werden, werden die Benutzer in dieser Konversation während der Erstellung als Argumente angegeben.

Im folgenden Beispiel, das [der Dokumentation entnommen](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create#basic-usage-1) ist, werden die beiden Benutzer "agent-007" und "agent-008" zu Mitgliedern des Channels "group-chat-1".

```js
// reference both agents you want to talk to
const user1 = await chat.getUser("agent-007")
const user2 = await chat.getUser("agent-008")

// add the channel ID, name, and topic
const { channel, hostMembership, inviteeMembership } = await chat.createGroupConversation(
  {
    users: 
    [
      user1,
      user2
    ],
    channelId: "group-chat-1"
    …
  }
)
```

Sie können auf verschiedene Weise abfragen, ob ein Benutzer Mitglied eines Channels ist, und Sie finden alle Einzelheiten in der [Dokumentation zur Channel-Mitgliedschaft](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/membership). Zum Beispiel, um die Mitglieder des Channels, den wir gerade erstellt haben, zu erhalten:

```js
// reference the "channel" object
const channel = await chat.getChannel("group-chat-1")
const members = await channel.getMembers()
//  members contains both users, so members.total === 2
```

Wenn Benutzer bei der Erstellung eines Channels nicht diesem zugewiesen werden, können sie später mit den entsprechenden [join()-](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/join) und [leave()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/leave) -Methoden beitreten oder ihn verlassen, wodurch dynamische Channels möglich sind. Benutzer können auch [eingeladen](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/invite) werden, Mitglied eines Channels zu werden.

Sie können dieses Verhalten in der kurzen Demo unten sehen. Da es sich um eine funktionierende Live-Demo handelt, bleibt die Channel-Mitgliedschaft auch nach dem Aktualisieren der Seite erhalten.

Interaktive Demo
----------------

  
**Wenn der eingebettete Inhalt** auf dieser Seite **nicht verfügbar ist**, kann er auch unter [https://chat-sdk-how-to-membership.netlify.app/](https://chat-sdk-how-to-membership.netlify.app/) angesehen werden.

Der Code, der diese Demo steuert, ist auf [GitHub](https://github.com/PubNubDevelopers/Chat-SDK-How-Tos/tree/main/membership) verfügbar, aber die wichtigsten Punkte sind:

Stellen Sie sicher, dass Sie eine Instanz des [Chat-Objekts](https://www.pubnub.com/docs/chat/chat-sdk/learn/chat-entities/chat) in Ihrer Anwendung instanziiert haben.

```js
const chat = await Chat.init({
  publishKey: "YOUR_PUBLISH_KEY",
  subscribeKey: "YOUR_SUBSCRIBE_KEY",
  userId: "YOUR_USER_ID",
})
```

Es gibt viele mögliche Parameter, die Sie an das Chat-SDK übergeben können, aber für die Channel-Mitgliedschaft benötigen Sie nicht mehr als die Standardschlüssel für die Veröffentlichung, die Anmeldung und die Benutzer-ID. Wenn das alles neu für Sie ist und Sie nicht wissen, wo Sie anfangen sollen, sehen Sie sich bitte den Abschnitt über die [Erstkonfiguration](https://www.pubnub.com/docs/chat/chat-sdk/build/configuration) in unserer Dokumentation an.

Einem Kanal beitreten. Dieser Code registriert sich auch, um Mitglieder-Updates zu erhalten, was im nächsten Abschnitt besprochen wird.

```js
async function join(channelName: string)
  {
    if (chat)
    {
      const channel = await chat.getChannel(channelName)
      const channelMembership = await channel?.join(() => null)
      channelMembership?.membership.streamUpdates(async (membership) => {
        //  Stream updates on the channel as follows
        console.log(membership)
      })
      
      //  For brevity, ignore that this call could contain multiple pages of memberships
      const {memberships} = await chat.currentUser.getMemberships()
      setMyMemberships(memberships) 
    }
  }
```

Wie in den Code-Kommentaren oben erwähnt, kann der Aufruf von [user.getMemberships()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/membership#get-membership) paginierte Daten enthalten, wenn es zu viele Channels gibt.

Der Code für die Schaltflächen zum Verlassen des Channels in der Demo sieht folgendermaßen aus:

```js
async function leave(channelName: string)
  {
    if (chat)
    {
      const channel = await chat.getChannel(channelName)
      await channel?.leave();
      //  For brevity, ignore that this call could contain multiple pages of memberships
      const {memberships} = await chat.currentUser.getMemberships()
      setMyMemberships(memberships) 
    }
  }
```

Um die Demo einfach zu halten, gibt es nur einen einzigen Benutzer, und es wird nur die eigene Mitgliedschaft des Benutzers berücksichtigt. In einer realen Anwendung werden Sie mehrere Benutzer haben, jeder mit seiner eigenen Channel-Mitgliedschaft. Eine [realistischere Demo](https://www.pubnub.com/demos/chat-sdk-mobile/) ist für unser Chat SDK verfügbar und wird am Ende dieses Leitfadens beschrieben.

### Metadaten zur Channel-Mitgliedschaft

Mit dem [Membership-Objekt](https://www.pubnub.com/docs/chat/chat-sdk/learn/chat-entities/membership) können Sie benutzerdefinierte Metadaten angeben, die sich auf die Assoziation zwischen dem Kanal und dem Benutzer beziehen; wenn es sich beispielsweise um einen Chat im Zusammenhang mit einer Supportanfrage handelt, könnten Sie die Rolle des Benutzers als {Rolle: 'Supporttechniker'} speichern.

Metadaten können bei der Erstellung der Mitgliedschaft deklariert oder zu jedem beliebigen Zeitpunkt vom einzelnen Benutzer [aktualisiert](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/membership#update) werden.

Um zu verfolgen, wann die Metadaten der Mitgliedschaft aktualisiert werden, bietet das Chat SDK die Methoden [streamUpdates() und streamUpdatesOn()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/membership#get-updates) für das [Membership-Objekt](https://www.pubnub.com/docs/chat/chat-sdk/learn/chat-entities/membership).

Wie in der früheren Demo gezeigt, können Sie Änderungen an den Mitgliedschafts-Metadaten wie folgt verfolgen:

```js
channelMembership?.membership.streamUpdates(async (membership) => {
  //  Stream updates on the channel as follows
  console.log(membership)
})
```

### Warum sollten Benutzer einem Kanal beitreten?

Man könnte annehmen, dass Benutzer einem Kanal beitreten müssen, um Nachrichten in diesem Kanal zu empfangen, aber das ist nicht der Fall. Um Nachrichten in einem Kanal zu empfangen, kann man die [connect()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/watch) -Methode aufrufen, in der man einen Callback bereitstellen kann, der aufgerufen wird, wenn eine Nachricht empfangen wird. Wenn Sie bei der [Erstellung](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create) eines Channels nicht Mitglied dieses Channels waren, müssen Sie [connect()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/watch) separat aufrufen, aber der Aufruf von [join()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/join) ruft connect() automatisch für Sie auf.

Wenn Sie mit PubNub vertraut sind, ist dieser [connect()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/watch) -Aufruf analog zu [subscribe()](https://www.pubnub.com/docs/general/channels/subscribe) und [addListener()](https://www.pubnub.com/docs/general/messages/receive).

Warum sollte man also einem Channel beitreten? Das Beitreten eines Channels und die damit verbundenen Channel-Mitgliedschaften sind grundlegend dafür, wie das Chat SDK Benutzerbeziehungen versteht. Daher ist es erforderlich, um viele leistungsfähigere SDK-Funktionen zu nutzen, wie z.B. Lesebestätigungen, Erwähnung von Benutzern, Anzahl ungelesener Nachrichten, Moderation und den Tippindikator.

Zusammenfassung der Mitgliedschaft
----------------------------------

-   **Was ist das?** Eine Beziehung zwischen einem Benutzer und einem Channel, mit anpassbaren Metadaten.
-   **Wie wird eine Mitgliedschaft erstellt?** Nutzer können bei der Erstellung eines Channels mit diesem verknüpft werden, oder sie können selbst einem Channel beitreten oder von anderen in einen Channel eingeladen werden, nachdem dieser erstellt worden ist.
-   **Wie wird eine Mitgliedschaft zerstört?** Nutzer können einen Channel jederzeit verlassen.
-   **Wie wird eine Mitgliedschaft nachverfolgt?** Die Mitglieder eines Channels können mit Getter-Funktionen abgefragt werden, und Sie können über Änderungen informiert werden, indem Sie sich für Aktualisierungen registrieren.
-   **Häufige Fallstricke:** Die Mitgliedschaft bedeutet nicht immer, dass Sie Nachrichten in einem Kanal erhalten; lesen Sie die Dokumentation sorgfältig durch, wenn Sie connect() separat aufrufen müssen.
-   **Gibt es weitere Einschränkungen?** Obwohl Sie "öffentlichen" Channels beitreten können, werden einige Funktionen, wie Lesebestätigungen oder der Tippindikator, für diese Art von Channel nicht unterstützt.
-   **Welche Funktionen sind für das PubNub Keyset erforderlich?** Stellen Sie sicher, dass Sie App Context auf Ihrem Keyset aktivieren.

Demo: Benutzerkanal-Mitgliedschaft in Aktion
--------------------------------------------

Unsere Chat-SDK-Demo für Mobile, die als [gehostete Demo](https://www.pubnub.com/demos/chat-sdk-mobile/) mit vollständigem Quellcode auf [GitHub](https://github.com/pubnub/js-chat/tree/master/samples/react-native-group-chat) verfügbar ist, verwendet die Mitgliedschaft zur Verwaltung von Benutzerunterhaltungen. **Sie sollten die Demo auch in einem iFrame unten in diesem Abschnitt sehen**.

![Two smartphones displaying chat application interfaces, one with chat settings and the other showing a conversation window.](https://images.ctfassets.net/3prze68gbwl1/7yuFtoqdBT21RfmAhxKSDs/ce53179847eb502be3ef8c0f8ea1e686/membership.png)

Folgen Sie diesen Schritten, um die in unserer Demo verwendeten Mitgliedschaften zu sehen:

1.  Melden Sie sich bei der Anwendung an und wählen Sie eine zufällige Benutzerkennung für jedes der beiden Geräte.
2.  Erstellen Sie eine Gruppe, indem Sie auf das Symbol "Neuer Chat" klicken und dann "Gruppenchat erstellen" auswählen.
3.  Wählen Sie die beiden Benutzerkennungen, mit denen Sie sich gerade angemeldet haben, und vergeben Sie einen Namen für die Gruppe.
4.  Hinter den Kulissen hat die Anwendung eine Mitgliedschaft erstellt, um jeden der beiden Benutzer mit der neu erstellten Gruppe zu verknüpfen.
5.  Rufen Sie die Gruppenkonversation auf, indem Sie auf die Entität klicken, die unter dem Abschnitt "Gruppen" erstellt wurde.
6.  Tippen Sie auf den Namen der Gruppe am oberen Rand des Bildschirms, um die Chat-Einstellungen Ihres Benutzers zu sehen (wie in der linken Abbildung oben dargestellt)
7.  Beachten Sie, dass der Name dieses Benutzers ein "Mitglied" des Chats ist.
8.  Beachten Sie, dass die Reaktionen erhalten bleiben und aus dem Nachrichtenverlauf gelesen werden, wenn Sie die Konversation verlassen oder sich sogar aus der App aus- und wieder einloggen.

  
**Wenn der eingebettete Inhalt** auf dieser Seite **nicht verfügbar ist**, kann er auch unter [https://pubnubdevelopers.github.io/Chat-SDK-Demo/mobile/](https://pubnubdevelopers.github.io/Chat-SDK-Demo/mobile/) eingesehen werden.

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

Dieser Artikel wurde ursprünglich auf [PubNub.com](https://pubnub.com/how-to/chat-sdk-manage-user-channel-membership/) 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/) 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/) an und erhalten Sie sofort kostenlosen Zugang zu den PubNub-Schlüsseln

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

Mit den [PubNub-Dokumenten](https://www.pubnub.com/docs) können Sie sofort loslegen, unabhängig von Ihrem Anwendungsfall oder [SDK](https://www.pubnub.com/docs)