Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Biblioteka klienta Azure Web PubSub Chat umożliwia aplikacjom serwerowym zarządzanie rolami czatu, użytkownikami, pokojami, członkostwem w pokojach, rozmowami i wiadomościami w centrum czatu Azure Web PubSub.
Rozpoczęcie pracy
Obecnie obsługiwane środowiska
- Wersje LTS systemu Node.js
Aby uzyskać więcej informacji, zobacz nasze zasad pomocy technicznej.
Wymagania wstępne
- Subskrypcja platformy Azure.
- Istniejący zasób Azure Web PubSub.
- Nazwa huba aplikacji czatu.
Instalowanie pakietu @azure/web-pubsub-chat
Zainstaluj bibliotekę klienta Azure WebPubSubChatService dla JavaScript z :npm
npm install @azure/web-pubsub-chat
Twórz i uwierzytelnij WebPubSubChatServiceClient
Obsługuje WebPubSubChatServiceClient uwierzytelnianie za pomocą parametry połączenia, danych uwierzytelniających Microsoft Entra lub .AzureKeyCredential
Uwierzytelnij się za pomocą parametry połączenia
Znajdziesz parametry połączenia dla swojego zasobu Azure Web PubSub w Azure Portal. Ponieważ parametry połączenia zawiera klucz dostępu, przechowuj go bezpiecznie i nie uwzględniaj w kodzie źródłowym.
Uwierzytelnij się za pomocą Microsoft Entra ID
Aby uwierzytelnić się za pomocą Microsoft Entra ID, będziesz potrzebować endpoint swojego zasobu Azure Web PubSub oraz danych uwierzytelniających. Punkt końcowy znajdziesz w Azure Portal.
Możesz uwierzytelnić się za pomocą Microsoft Entra ID, używając poświadczenia z biblioteki @azure/identity lub istniejącego tokena Microsoft Entra.
Aby użyć dostawcy DefaultAzureCredential pokazanego poniżej lub innych dostawców poświadczeń dostarczonych z zestawem Azure SDK, zainstaluj pakiet @azure/identity:
npm install @azure/identity
DefaultAzureCredentialobsługuje kilka tożsamości Microsoft Entra. Podczas lokalnego rozwoju może korzystać z tożsamości dewelopera zalogowanej za pomocą wspieranego narzędzia deweloperskiego. W Azure może korzystać z tożsamości zarządzanej (managed identity). Może także uwierzytelniać zasadę usługi lub tożsamość obciążenia, gdy jest skonfigurowana pod kątem środowiska.
Niezależnie od tego, jaką tożsamość wybierzesz, musi być przypisana odpowiednia rola Azure Web PubSub w płaszczyźnie danych. Role zarządzania zasobami w Azure, takie jak Owner nie przyznają uprawnień do poziomu danych.
Stwórz klienta z parametry połączenia, poświadczeniem Microsoft Entra, takim jak DefaultAzureCredential, lub .AzureKeyCredential
import { WebPubSubChatServiceClient, AzureKeyCredential } from "@azure/web-pubsub-chat";
import { DefaultAzureCredential } from "@azure/identity";
const connectionStringClient = new WebPubSubChatServiceClient("<connectionString>", "<hubName>");
const tokenCredentialClient = new WebPubSubChatServiceClient(
"<endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
const keyCredentialClient = new WebPubSubChatServiceClient(
"<endpoint>",
new AzureKeyCredential("<accessKey>"),
"<hubName>",
);
Kluczowe pojęcia
WebPubSubChatServiceClient
WebPubSubChatServiceClient jest głównym interfejsem do zarządzania zasobami czatu w hubie Web PubSub.
Centrum
Hub to logiczna granica dla aplikacji czatu. Role, użytkownicy, pokoje, rozmowy i wiadomości zarządzane przez klienta należą do hubu dostarczonego konstruktorowi klienta.
Role i uprawnienia
Rola użytkownika kontroluje działania na poziomie huba, takie jak tworzenie pokoi. Rola pokoju kontroluje działania w pomieszczeniu, takie jak publikowanie wiadomości, czytanie historii wiadomości czy zapraszanie użytkowników.
Pokoje, członkowie i rozmowy
Pokój zawiera członków i prowadzi domyślną rozmowę. Dodaj użytkownika do pokoju, przypisując mu rolę pokoju. Wiadomości są publikowane przez połączonych klientów czatu i mogą być wylistowane, aktualizowane lub usuwane za pośrednictwem klienta usługi.
Tagi jednostek
Zasoby czatu mają wartość etag . Przekaż tę wartość przez opcję operacji ifMatch do wykonania zmiany warunkowej lub usunięcia i zapobiegania nadpisowi nowszej wersji zasobu.
Przykłady
Ustaw role, użytkownika i pokój
Stwórz role użytkownika i pokoju, stwórz użytkownika ludzkiego i pokój, a następnie dodaj użytkownika do pokoju.
import { WebPubSubChatServiceClient, KnownChatPermission } from "@azure/web-pubsub-chat";
import { DefaultAzureCredential } from "@azure/identity";
const client = new WebPubSubChatServiceClient(
"<endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
const userRoleName = "user.contoso_member";
const roomRoleName = "room.contoso_member";
const userId = "alice";
const roomId = "general";
await client.createOrReplaceRole(userRoleName, {
permissions: [KnownChatPermission.UserCreateRoom],
});
await client.createOrReplaceRole(roomRoleName, {
permissions: [KnownChatPermission.RoomPublishMessage, KnownChatPermission.RoomHistory],
});
await client.createOrReplaceUser(userId, {
kind: "Human",
nickname: "Alice",
roleName: userRoleName,
});
const room = await client.createOrReplaceRoom(roomId, { title: "General" });
await client.createOrReplaceRoomMember(roomId, userId, { roleName: roomRoleName });
console.log(`Created room ${room.id} with conversation ${room.defaultConversation}`);
Używaj wbudowanych ról i znanych uprawnień
Użyj przy BuiltInChatRoles przypisywaniu roli zdefiniowanej przez usługę oraz KnownChatPermission przy tworzeniu roli niestandardowej. Ciągi uprawnień spoza znanych wartości są również akceptowane dla zgodności w przyszłości.
import {
WebPubSubChatServiceClient,
BuiltInChatRoles,
KnownChatPermission,
} from "@azure/web-pubsub-chat";
import { DefaultAzureCredential } from "@azure/identity";
const client = new WebPubSubChatServiceClient(
"<endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
await client.createOrReplaceUser("alice", {
kind: "Human",
nickname: "Alice",
roleName: BuiltInChatRoles.UserNormal,
});
await client.createOrReplaceRole("room.moderator", {
permissions: [
KnownChatPermission.RoomHistory,
KnownChatPermission.RoomRemoveUser,
KnownChatPermission.RoomPublishMessage,
],
});
Zarządzanie rolami
Stwórz niestandardową rolę, pobierz ją, wypisz role w hubie i usuń ją po ukończeniu.
import { WebPubSubChatServiceClient, KnownChatPermission } from "@azure/web-pubsub-chat";
import { DefaultAzureCredential } from "@azure/identity";
const client = new WebPubSubChatServiceClient(
"<endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
const roleName = "user.contoso_member";
try {
const role = await client.createOrReplaceRole(roleName, {
permissions: [KnownChatPermission.UserCreateRoom, KnownChatPermission.UserFetchAllRooms],
});
console.log(`Created role: ${role.name}`);
const fetchedRole = await client.getRole(roleName);
console.log(`Fetched role: ${fetchedRole.name}`);
for await (const listedRole of client.listRoles()) {
console.log(`Role: ${listedRole.name}`);
}
} finally {
await client.deleteRole(roleName);
}
Zarządzaj pokojem
Stwórz pokój, odzyskaj jego aktualny stan i usuń go.
import { WebPubSubChatServiceClient } from "@azure/web-pubsub-chat";
import { DefaultAzureCredential } from "@azure/identity";
const client = new WebPubSubChatServiceClient(
"<endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
const roomId = "general";
const room = await client.createOrReplaceRoom(roomId, { title: "General" });
console.log(`Created room ${room.id} with conversation ${room.defaultConversation}`);
const fetchedRoom = await client.getRoom(roomId);
console.log(`Fetched room: ${fetchedRoom.id}, title: ${fetchedRoom.title}`);
await client.deleteRoom(roomId);
Zarządzanie użytkownikiem
Stwórz użytkownika z wbudowaną rolą, pobierz profil i usuń go.
import { WebPubSubChatServiceClient, BuiltInChatRoles } from "@azure/web-pubsub-chat";
import { DefaultAzureCredential } from "@azure/identity";
const client = new WebPubSubChatServiceClient(
"<endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
const userId = "alice";
const user = await client.createOrReplaceUser(userId, {
kind: "Human",
nickname: "Alice",
roleName: BuiltInChatRoles.UserNormal,
});
console.log(`Created user: ${user.id}, nickname: ${user.nickname}`);
const fetchedUser = await client.getUser(userId);
console.log(`Fetched user: ${fetchedUser.id}, nickname: ${fetchedUser.nickname}`);
await client.deleteUser(userId);
Wypisz wiadomości w rozmowie
Użyj iteracji asynchronicznej, aby odczytać wiadomości z rozmowy na wszystkich stronach wyników.
import { WebPubSubChatServiceClient } from "@azure/web-pubsub-chat";
import { DefaultAzureCredential } from "@azure/identity";
const client = new WebPubSubChatServiceClient(
"<endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
for await (const message of client.listMessages("<conversationId>")) {
console.log(`${message.createdBy}: ${message.content.text}`);
}
Wygeneruj token dostępu klienta
Wygeneruj adres URL, którego klient czatu może użyć do połączenia się z usługą Web PubSub jako konkretny użytkownik.
import { WebPubSubChatServiceClient } from "@azure/web-pubsub-chat";
import { DefaultAzureCredential } from "@azure/identity";
const client = new WebPubSubChatServiceClient(
"<endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
const accessToken = await client.getClientAccessToken({ userId: "alice" });
Troubleshooting
Przemysł drzewny
Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby wyświetlić dziennik żądań i odpowiedzi HTTP, ustaw zmienną środowiskową AZURE_LOG_LEVEL na info. Alternatywnie rejestrowanie można włączyć w czasie wykonywania, wywołując setLogLevel w @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Aby uzyskać bardziej szczegółowe instrukcje dotyczące włączania dzienników, zapoznaj się z dokumentacją pakietu @azure/logger.
Contributing
Jeśli chcesz współtworzyć tę bibliotekę, przeczytaj przewodnik dotyczący współtworzenia , aby dowiedzieć się więcej na temat tworzenia i testowania kodu.
Azure SDK for JavaScript