Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A biblioteca cliente Azure Web PubSub Chat permite que aplicações de servidor gerenciem funções de chat, utilizadores, salas, membros de salas, conversas e mensagens num hub de chat Azure Web PubSub.
Como Começar
Ambientes atualmente suportados
Consulte a nossa política de suporte para obter mais detalhes.
Pré-requisitos
- Uma assinatura do Azure.
- Um recurso já existente no Azure Web PubSub.
- Um nome de hub para a aplicação de chat.
Instalar o pacote @azure/web-pubsub-chat
Instale a biblioteca cliente Azure WebPubSubChatService para JavaScript comnpm:
npm install @azure/web-pubsub-chat
Criar e autenticar um WebPubSubChatServiceClient
Suporta WebPubSubChatServiceClient autenticação com uma cadeia de ligação, uma credencial Microsoft Entra ou um AzureKeyCredential.
Autenticar com uma cadeia de ligação
Pode encontrar a cadeia de ligação para o seu recurso Azure Web PubSub no portal do Azure. Como a cadeia de ligação contém uma chave de acesso, armazene-a de forma segura e não a inclua no código-fonte.
Autenticar com o Microsoft Entra ID
Para autenticar com o Microsoft Entra ID, precisará endpoint do seu recurso Azure Web PubSub e de uma credencial. Pode encontrar o endpoint no portal do Azure.
Pode autenticar-se com o Microsoft Entra ID usando uma credencial da biblioteca @azure/identity ou um token Microsoft Entra existente.
Para usar o provedor de DefaultAzureCredential mostrado abaixo ou outros provedores de credenciais fornecidos com o SDK do Azure, instale o pacote @azure/identity:
npm install @azure/identity
DefaultAzureCredentialsuporta várias identidades Microsoft Entra. Durante o desenvolvimento local, pode usar uma identidade de programador iniciada através de uma ferramenta de desenvolvimento suportada. No Azure, pode usar uma identidade gerida. Também pode autenticar uma identidade de principal de serviço ou carga de trabalho quando configurada para o ambiente.
Qualquer identidade que utilize deve ser atribuída a um papel apropriado no plano de dados Azure Web PubSub. Funções de gestão de recursos no Azure, como Owner não concedem permissões no plano de dados.
Crie o cliente com uma cadeia de ligação, uma credencial Microsoft Entra como DefaultAzureCredential, ou um 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>",
);
Conceitos-chave
WebPubSubChatServiceClient
WebPubSubChatServiceClient é a interface principal para gerir recursos de chat num hub Web PubSub.
Núcleo
Um hub é o limite lógico para uma aplicação de chat. Papéis, utilizadores, salas, conversas e mensagens geridas por um cliente pertencem todos ao hub fornecido ao construtor do cliente.
Funções e permissões
Um papel de utilizador controla ações ao nível do hub, como criar salas. Um papel de sala controla ações dentro de uma sala, como publicar mensagens, ler o histórico de mensagens ou convidar utilizadores.
Salas, membros e conversas
Uma sala contém membros e tem uma conversa por defeito. Adicione um utilizador a uma sala atribuindo-lhe um papel de sala. As mensagens são publicadas por clientes de chat ligados e podem ser listadas, atualizadas ou eliminadas através do cliente de serviço.
Etiquetas de entidade
Os recursos de chat incluem um etag valor. Passe esse valor pela opção de ifMatch uma operação para realizar uma atualização condicional ou eliminar e evite sobrescrever uma versão de recurso mais recente.
Examples
Configurar papéis, um utilizador e uma sala
Crie papéis de utilizador e de sala, crie um utilizador humano e uma sala, e depois adicione o utilizador à sala.
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}`);
Usar papéis incorporados e permissões conhecidas
Use BuiltInChatRoles ao atribuir um papel definido pelo serviço e KnownChatPermission ao criar um papel personalizado. Cadeias de permissões fora dos valores conhecidos também são aceites para compatibilidade futura.
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,
],
});
Gerenciar funções
Crie um papel personalizado, recupere-o, liste os papéis no hub e apague o papel personalizado quando terminar.
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);
}
Gerir uma sala
Cria uma sala, recupera o seu estado atual e apaga-a.
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);
Gerir um utilizador
Crie um utilizador com um papel incorporado, recupere o perfil e elimine-o.
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);
Listar mensagens numa conversa
Use iteração assíncrona para ler mensagens de uma conversa em todas as páginas de resultados.
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}`);
}
Gerar um token de acesso ao cliente
Gerar uma URL que um cliente de chat possa usar para se ligar ao serviço Web PubSub como utilizador específico.
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
Exploração Florestal
Habilitar o registro em log pode ajudar a descobrir informações úteis sobre falhas. Para ver um log de solicitações e respostas HTTP, defina a variável de ambiente AZURE_LOG_LEVEL como info. Como alternativa, o registro em log pode ser habilitado em tempo de execução chamando setLogLevel no @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Para obter instruções mais detalhadas sobre como habilitar logs, você pode consultar os documentos do pacote @azure/logger.
Contributing
Se você quiser contribuir para esta biblioteca, leia o guia de contribuição para saber mais sobre como criar e testar o código.
Azure SDK for JavaScript