Wprowadzenie do PubNub Chat SDK
PubNub Chat SDK, dostępny dla aplikacji TypeScript i JavaScript, udostępnia zestaw interfejsów API zaprojektowanych w celu ułatwienia dodawania potężnych i elastycznych funkcji czatu do aplikacji przy minimalnym rozwoju. Opcje czatu, takie jak cytowanie, wzmianki o użytkownikach, odniesienia do kanałów, wątki, potwierdzenia odczytu i wskaźniki pisania są natywnie obsługiwane przez SDK, co pozwala szybko zbudować pełnoprawną aplikację.
Zapoznaj się z naszą dokumentacją i przykładową aplikacją czatu, aby rozpocząć korzystanie z Chat SDK. Nasz samouczek przeprowadzi Cię przez podstawową funkcjonalność Chat SDK i dotknie niektórych bardziej zaawansowanych funkcji, podczas gdy nasze hostowane demo pokaże Chat SDK w akcji.
Ten poradnik jest częścią serii postów poświęconych niektórym z bardziej zaawansowanych funkcji PubNub Chat SDK. Serię można czytać w dowolnej kolejności, ale lista powiązanych artykułów znajduje się poniżej:
- Jak zarządzać członkostwem w kanałach użytkowników za pomocą Chat SDK
- Jak dodawać reakcje i emotikony do wiadomości za pomocą zestawu Chat SDK
- Jak tworzyć wątki i cytować wiadomości za pomocą Chat SDK
- Jak wspominać użytkowników i kanały za pomocą Chat SDK
Zarządzanie członkostwem w kanałach użytkowników
Chat SDK definiuje kilka typów, które są ważne dla zrozumienia członkostwa w kanale:
- Użytkownicy reprezentują osoby biorące udział w konwersacji.
- Kanały reprezentują konwersację między wieloma użytkownikami. Dokumentacja wykorzystuje analogię, że każdy kanał reprezentuje pojedynczy "pokój rozmów". Kanały mogą być bezpośrednie (tj. konwersacja 1:1 między dwoma użytkownikami), "grupowe" (tj. między wieloma nazwanymi użytkownikami) lub "publiczne".
- Członkostwo reprezentuje relację między użytkownikami i kanałami z opcjonalnymi towarzyszącymi metadanymi.
W tym przewodniku omówiono sposób tworzenia i zarządzania członkostwem w kanałach.
Jak użytkownicy dołączają do kanału
Istnieje wiele sposobów, w jakie użytkownik może zostać członkiem kanału. Gdy tworzone są kanały bezpośrednie lub grupowe, użytkownicy w tej konwersacji są określani jako argumenty podczas tworzenia.
W poniższym przykładzie, zaczerpniętym z dokumentacji, dwaj użytkownicy "agent-007" i "agent-008" są członkami kanału "group-chat-1".
// 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"
…
}
)
Możesz zapytać, czy użytkownik jest członkiem kanału na wiele sposobów, a pełne szczegóły można znaleźć w dokumentacji dotyczącej członkostwa w kanale. Na przykład, aby uzyskać członków kanału, który właśnie utworzyliśmy:
// 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
Jeśli użytkownicy nie są przypisani do kanału podczas jego tworzenia, mogą dołączyć lub opuścić go później za pomocą odpowiednich metod join() i leave( ), umożliwiając tworzenie dynamicznych kanałów. Użytkownicy mogą również zostać zaproszeni do członkostwa w kanale.
Możesz zobaczyć to zachowanie w krótkim demo poniżej. Ponieważ jest to żywe, działające demo, zauważ, że członkostwo w kanale będzie trwało nawet po odświeżeniu strony.
Interaktywne demo
Jeśli osadzona zawartość nie jest dostępna na tej stronie, można ją również wyświetlić pod adresem https://chat-sdk-how-to-membership.netlify.app/.
Kod napędzający to demo jest dostępny na GitHub, ale kluczowe punkty są następujące:
Upewnij się, że masz instancję obiektu Chat w swojej aplikacji
const chat = await Chat.init({
publishKey: "YOUR_PUBLISH_KEY",
subscribeKey: "YOUR_SUBSCRIBE_KEY",
userId: "YOUR_USER_ID",
})
Istnieje wiele możliwych parametrów, które można przekazać do Chat SDK, ale do członkostwa w kanale nie potrzeba nic więcej niż standardowy klucz publikowania, klucz subskrypcji i identyfikator użytkownika. Jeśli wszystko to jest dla Ciebie nowe i nie wiesz, od czego zacząć, zapoznaj się z sekcją konfiguracji początkowej w naszej dokumentacji.
Dołącz do kanału. Ten kod rejestruje się również w celu otrzymywania aktualizacji członkostwa, co omówiono w następnej sekcji.
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)
}
}
Jak wspomniano w powyższych komentarzach do kodu, wywołanie user.getMemberships() może zawierać stronicowane dane, jeśli istnieje zbyt wiele kanałów.
Kod, który obsługuje przyciski "opuść kanał" w wersji demonstracyjnej, jest następujący:
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)
}
}
Aby zachować prostotę demo, istnieje tylko jeden użytkownik i tylko jego członkostwo jest brane pod uwagę. W prawdziwej aplikacji będziesz mieć wielu użytkowników, każdy z własnym członkostwem w kanale. Bardziej realistyczne demo jest dostępne dla naszego Chat SDK i jest omówione na dole tego przewodnika.
Metadane członkostwa w kanale
Obiekt Membership umożliwia określenie niestandardowych metadanych związanych z powiązaniem między kanałem a użytkownikiem; na przykład, jeśli był to czat związany z zapytaniem o pomoc techniczną, można zapisać rolę użytkownika jako {role: "support technician"}.
Metadane mogą być deklarowane podczas tworzenia członkostwa lub mogą być aktualizowane w dowolnym momencie przez indywidualnego użytkownika.
Aby śledzić, kiedy metadane członkostwa są aktualizowane, Chat SDK udostępnia metody streamUpdates() i streamUpdatesOn() dla obiektu Membership.
Jak pokazano we wcześniejszym demo, można śledzić zmiany metadanych członkostwa w następujący sposób:
channelMembership?.membership.streamUpdates(async (membership) => {
// Stream updates on the channel as follows
console.log(membership)
})
Dlaczego użytkownicy powinni dołączać do kanału?
Jednym z założeń jest to, że użytkownicy muszą dołączyć do kanału, aby otrzymywać wiadomości na tym kanale, ale tak nie jest. Aby odbierać wiadomości na kanale, można wywołać metodę connect( ), w której można podać wywołanie zwrotne wywoływane za każdym razem, gdy wiadomość zostanie odebrana. Jeśli nie zostałeś członkiem kanału podczas jego tworzenia, będziesz musiał wywołać connect( ) osobno, ale wywołanie join( ) wywoła connect() automatycznie.
Jeśli jesteś zaznajomiony z PubNub, to wywołanie connect () jest analogiczne do subscribe() i addListener().
Dlaczego więc warto dołączyć do kanału? Dołączenie do kanału i powiązane członkostwo w kanale ma fundamentalne znaczenie dla sposobu, w jaki Chat SDK rozumie relacje między użytkownikami, więc jest wymagane do korzystania z wielu bardziej zaawansowanych funkcji SDK, takich jak potwierdzenia odczytu, wzmianki o użytkownikach, liczba nieprzeczytanych wiadomości, moderacja i wskaźnik pisania.
Podsumowanie członkostwa
- Co to jest? Relacja między użytkownikiem a kanałem, z konfigurowalnymi metadanymi.
- Jak tworzone jest członkostwo? Użytkownicy mogą być powiązani z kanałem podczas jego tworzenia lub mogą dołączyć sami lub zostać zaproszeni przez innych do kanału po jego utworzeniu.
- W jaki sposób członkostwo jest niszczone? Użytkownicy mogą opuścić kanał w dowolnym momencie
- Jak śledzone jest członkostwo? Członkowie kanału mogą być sprawdzani za pomocą funkcji getter, a ty możesz być powiadamiany o zmianach, rejestrując się w celu aktualizacji.
- Typowe pułapki: Członkostwo nie zawsze oznacza otrzymywanie wiadomości na kanale; należy uważnie przeczytać dokumentację, gdy trzeba wywołać connect() osobno.
- Jakieś inne ograniczenia? Chociaż możesz dołączyć do kanałów "publicznych", kilka funkcji, takich jak potwierdzenia odczytu lub wskaźnik pisania, nie jest obsługiwanych dla tego typu kanałów.
- Jakie funkcje są wymagane w zestawie kluczy PubNub? Pamiętaj, aby włączyć App Context w swoim zestawie kluczy.
Demo: Członkostwo w kanale użytkownika w akcji
Nasze demo Chat SDK dla urządzeń mobilnych, dostępne jako hostowane demo z pełnym kodem źródłowym dostępnym na GitHub, wykorzystuje członkostwo do zarządzania konwersacjami użytkowników. Powinieneś także zobaczyć demo renderowane w iFrame na dole tej sekcji.
Wykonaj następujące kroki, aby zobaczyć członkostwa używane w naszym demo:
- Zaloguj się do aplikacji, wybierając losowy identyfikator użytkownika dla każdego z dwóch urządzeń.
- Utwórz grupę, klikając ikonę "nowy czat", a następnie wybierając "Utwórz czat grupowy".
- Wybierz dwa identyfikatory użytkowników, jako których właśnie się zalogowałeś, i przypisz nazwę dla grupy.
- Za kulisami aplikacja utworzyła członkostwo, aby powiązać każdego z dwóch użytkowników z nowo utworzoną grupą.
- Wejdź do konwersacji grupowej, klikając utworzoną jednostkę w sekcji "Grupy".
- Dotknij nazwy grupy w górnej części ekranu, aby zobaczyć ustawienia czatu użytkownika (jak pokazano na lewym obrazku powyżej)
- Zauważ, że nazwa tego użytkownika jest "członkiem" czatu.
- Zauważ, że jeśli wycofasz się z rozmowy lub nawet wylogujesz się i wrócisz do aplikacji, reakcje zostaną zachowane i odczytane z historii wiadomości.
Jeśli osadzona zawartość nie jest dostępna na tej stronie, można ją również wyświetlić pod adresem https://pubnubdevelopers.github.io/Chat-SDK-Demo/mobile/.
Jak PubNub może ci pomóc?
Ten artykuł został pierwotnie opublikowany na PubNub.com
Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.
Podstawą naszej platformy jest największa w branży i najbardziej skalowalna sieć komunikacyjna w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.
Poznaj PubNub
Sprawdź Live Tour, aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.
Rozpocznij konfigurację
Załóż konto PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.
Rozpocznij
Dokumenty PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub zestawu SDK.
Top comments (0)