Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Perpustakaan klien Azure Web PubSub Chat memungkinkan aplikasi server mengelola peran chat, pengguna, ruangan, keanggotaan ruangan, percakapan, dan pesan di Azure Web PubSub Chat hub.
Memulai Langkah Pertama
Lingkungan yang didukung saat ini
Lihat kebijakan dukungan kami untuk detail selengkapnya.
Prasyarat
- Sebuah langganan Azure.
- Sumber daya Azure Web PubSub yang sudah ada.
- Nama hub untuk aplikasi chat.
Pasang paket @azure/web-pubsub-chat
Instal pustaka klien Azure WebPubSubChatService untuk JavaScript dengan npm:
npm install @azure/web-pubsub-chat
Membuat dan mengautentikasi WebPubSubChatServiceClient
Mendukung WebPubSubChatServiceClient autentikasi dengan string koneksi, kredensial Microsoft Entra, atau .AzureKeyCredential
Autentikasi dengan string koneksi
Anda dapat menemukan string koneksi untuk sumber daya Azure Web PubSub Anda di portal Azure. Karena string koneksi berisi kunci akses, simpan dengan aman dan jangan sertakan dalam kode sumber.
Mengautentikasi dengan Microsoft Entra ID
Untuk mengautentikasi dengan Microsoft Entra ID, Anda memerlukan endpoint sumber daya Azure Web PubSub Anda dan kredensial. Anda dapat menemukan endpoint di portal Azure.
Anda dapat mengautentikasi dengan Microsoft Entra ID menggunakan kredensial dari pustaka @azure/identity atau token Microsoft Entra yang ada.
Untuk menggunakan penyedia DefaultAzureCredential yang ditunjukkan di bawah ini, atau penyedia kredensial lain yang disediakan dengan Azure SDK, instal paket @azure/identity:
npm install @azure/identity
DefaultAzureCredentialmendukung beberapa identitas Microsoft Entra. Selama pengembangan lokal, perangkat dapat menggunakan identitas pengembang yang masuk melalui alat pengembangan yang didukung. Di Azure, dapat menggunakan identitas terkelola. Perangkat ini juga dapat mengautentikasi service principal atau identitas beban kerja saat dikonfigurasi untuk lingkungan.
Identitas mana pun yang Anda gunakan harus diberikan peran data-plane Azure Web PubSub yang sesuai. Peran manajemen sumber daya Azure seperti Owner tidak memberikan izin data-plane.
Buat klien dengan string koneksi, kredensial Microsoft Entra seperti DefaultAzureCredential, atau .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>",
);
Konsep Utama
WebPubSubChatServiceClient
WebPubSubChatServiceClient adalah antarmuka utama untuk mengelola sumber daya obrolan di hub Web PubSub.
Pusat
Hub adalah batas logis untuk aplikasi chat. Peran, pengguna, ruangan, percakapan, dan pesan yang dikelola oleh klien semuanya termasuk dalam hub yang disediakan kepada konstruktor klien.
Peran dan izin
Peran pengguna mengontrol tindakan tingkat hub seperti membuat ruangan. Peran ruang mengontrol tindakan di dalam ruangan, seperti mempublikasikan pesan, membaca riwayat pesan, atau mengundang pengguna.
Ruangan, anggota, dan percakapan
Sebuah ruangan berisi anggota dan memiliki percakapan default. Tambahkan pengguna ke ruangan dengan memberikan peran ruang kepada pengguna. Pesan dipublikasikan oleh klien chat yang terhubung dan dapat didaftarkan, diperbarui, atau dihapus melalui klien layanan.
Tag entitas
Sumber daya obrolan mencakup sebuah etag nilai. Teruskan nilai tersebut melalui opsi operasi ifMatch untuk melakukan pembaruan bersyarat atau menghapus dan mencegah menimpa versi sumber daya yang lebih baru.
Examples
Atur peran, pengguna, dan ruangan
Buat peran pengguna dan ruang, buat pengguna manusia dan ruang, lalu tambahkan pengguna ke ruang.
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}`);
Gunakan peran bawaan dan izin yang sudah diketahui
Gunakan BuiltInChatRoles saat menetapkan peran yang didefinisikan layanan dan KnownChatPermission saat membuat peran kustom. String izin di luar nilai yang diketahui juga diterima untuk kompatibilitas ke depan.
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,
],
});
Mengelola peran
Buat peran kustom, ambil, daftar peran di hub, dan hapus peran kustom setelah selesai.
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);
}
Kelola sebuah ruangan
Buat ruangan, ambil status saat ini, dan hapus.
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);
Kelola pengguna
Buat pengguna dengan peran bawaan, ambil profilnya, dan hapus.
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);
Daftarkan pesan dalam percakapan
Gunakan iterasi asinkron untuk membaca pesan dari percakapan di semua halaman hasil.
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}`);
}
Menghasilkan token akses klien
Buat URL yang dapat digunakan klien chat untuk terhubung ke layanan Web PubSub sebagai pengguna tertentu.
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
Penebangan kayu
Mengaktifkan pengelogan dapat membantu menemukan informasi yang berguna tentang kegagalan. Untuk melihat log permintaan dan respons HTTP, atur variabel lingkungan AZURE_LOG_LEVEL ke info. Atau, pengelogan dapat diaktifkan saat runtime dengan memanggil setLogLevel di @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Untuk instruksi lebih rinci tentang cara mengaktifkan log, Anda dapat melihat dokumen paket @azure/logger.
Contributing
Jika Anda ingin berkontribusi pada pustaka ini, baca panduan berkontribusi untuk mempelajari selengkapnya tentang cara membuat dan menguji kode.
Azure SDK for JavaScript