Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Azure Web PubSub szolgáltatás egy Azure által felügyelt szolgáltatás, amely segít a fejlesztőknek a webalkalmazások valós idejű funkciókkal és közzétételi-feliratkozási mintával történő egyszerű összeállításában. Az Azure Web PubSub szolgáltatást minden olyan forgatókönyv használhatja, amely valós idejű közzétételi-előfizetési üzenetküldést igényel a kiszolgáló és az ügyfelek között, vagy az ügyfelek között. A hagyományos valós idejű funkciók, amelyek gyakran igényelnek lekérdezést a kiszolgálóról vagy HTTP-kérések elküldése, az Azure Web PubSub szolgáltatást is használhatják.
Ezt a tárat az alkalmazáskiszolgáló oldalán használhatja a WebSocket-ügyfélkapcsolatok kezeléséhez, ahogyan az alábbi ábrán látható:
.
- Üzenetek küldése központoknak és csoportoknak.
- Üzenetek küldése adott felhasználóknak és kapcsolatoknak.
- Felhasználók és kapcsolatok csoportosítása csoportokba.
- Kapcsolatok bezárása
- Meglévő kapcsolat engedélyeinek megadása, visszavonása és ellenőrzése
Az itt használt kifejezések részletes ismertetését Főbb fogalmak szakaszban találja.
Forráskód | Csomag (NPM) | API-referenciadokumentáció | Termékdokumentáció | Minták
Kezdetekhez
Jelenleg támogatott környezetek
Előfeltételek
- Egy Azure-előfizetés.
- Egy meglévő Azure Web PubSub szolgáltatáspéldány.
1. A @azure/web-pubsub csomag telepítése
npm install @azure/web-pubsub
2. WebPubSubServiceClient létrehozása és hitelesítése
import { WebPubSubServiceClient } from "@azure/web-pubsub";
const serviceClient = new WebPubSubServiceClient("<ConnectionString>", "<hubName>");
A WebPubSubServiceClient egy végpont és egy AzureKeyCredentialhasználatával is hitelesítheti:
import { AzureKeyCredential, WebPubSubServiceClient } from "@azure/web-pubsub";
const key = new AzureKeyCredential("<Key>");
const serviceClient = new WebPubSubServiceClient("<Endpoint>", key, "<hubName>");
Vagy hitelesítse a WebPubSubServiceClientAzure Active Directory
- A
@azure/identityfüggőség telepítése
npm install @azure/identity
- Frissítse a forráskódot a
DefaultAzureCredentialhasználatára:
import { DefaultAzureCredential } from "@azure/identity";
import { WebPubSubServiceClient } from "@azure/web-pubsub";
const key = new DefaultAzureCredential();
const serviceClient = new WebPubSubServiceClient("<Endpoint>", key, "<hubName>");
Főbb fogalmak
Kapcsolat
A kapcsolat, más néven ügyfél- vagy ügyfélkapcsolat a Web PubSub szolgáltatáshoz csatlakoztatott egyedi WebSocket-kapcsolatot jelöli. Sikeres csatlakozás esetén a Web PubSub szolgáltatás egyedi kapcsolatazonosítót rendel ehhez a kapcsolathoz.
Kerékagy
A központ egy logikai fogalom az ügyfélkapcsolatok halmazához. Általában egy központot használ egy célra, például egy csevegőközpontot vagy egy értesítési központot. Amikor létrejön egy ügyfélkapcsolat, az egy központhoz csatlakozik, és annak élettartama alatt az adott központhoz tartozik. A különböző alkalmazások különböző központnevek használatával oszthatnak meg egy Azure Web PubSub szolgáltatást.
Csoport
A csoport a központhoz való kapcsolatok egy részhalmaza. Hozzáadhat egy ügyfélkapcsolatot egy csoporthoz, vagy bármikor eltávolíthatja az ügyfélkapcsolatot a csoportból. Ha például egy ügyfél csatlakozik egy csevegőszobához, vagy amikor egy ügyfél elhagyja a csevegőszobát, ez a csevegőszoba csoportnak tekinthető. Egy ügyfél több csoporthoz is csatlakozhat, egy csoport pedig több ügyfelet is tartalmazhat.
Felhasználó
A Web PubSub-kapcsolatok egy felhasználóhoz tartozhatnak. Egy felhasználó több kapcsolattal is rendelkezhet, például ha egy felhasználó több eszközön vagy több böngészőlapon csatlakozik.
Üzenet
Amikor az ügyfél csatlakoztatva van, üzeneteket küldhet a felsőbb rétegbeli alkalmazásnak, vagy fogadhat üzeneteket a felsőbb rétegbeli alkalmazásból a WebSocket-kapcsolaton keresztül.
Példák
Az ügyfél hozzáférési jogkivonatának lekérése a WebSocket-kapcsolat elindításához
import { WebPubSubServiceClient } from "@azure/web-pubsub";
import { DefaultAzureCredential } from "@azure/identity";
const serviceClient = new WebPubSubServiceClient(
"<Endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
// Get the access token for the WebSocket client connection to use
let token = await serviceClient.getClientAccessToken();
// Or get the access token and assign the client a userId
token = await serviceClient.getClientAccessToken({ userId: "user1" });
// Or get the access token that the client will join group GroupA when it connects using the access token
token = await serviceClient.getClientAccessToken({ userId: "user1", groups: ["GroupA"] });
Üzenetek közvetítése a központ összes kapcsolatára
import { WebPubSubServiceClient } from "@azure/web-pubsub";
import { DefaultAzureCredential } from "@azure/identity";
const serviceClient = new WebPubSubServiceClient(
"<Endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
// Send a JSON message
await serviceClient.sendToAll({ message: "Hello world!" });
// Send a plain text message
await serviceClient.sendToAll("Hi there!", { contentType: "text/plain" });
// Send a binary message
const payload = new Uint8Array(10);
await serviceClient.sendToAll(payload.buffer);
Üzenetek küldése egy központ összes kapcsolatára OData szűrőszintaxissal
A filter szintaxisról további információt Azure Web PubSubOData-szűrőszintaxisával kapcsolatban talál.
import { WebPubSubServiceClient, odata } from "@azure/web-pubsub";
import { DefaultAzureCredential } from "@azure/identity";
const serviceClient = new WebPubSubServiceClient(
"<Endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
// Send a JSON message to anonymous connections
await serviceClient.sendToAll({ message: "Hello world!" }, { filter: "userId eq null" });
// Send a text message to connections in groupA but not in groupB
const groupA = "groupA";
const groupB = "groupB";
await serviceClient.sendToAll("Hello world!", {
contentType: "text/plain",
// use plain text "'groupA' in groups and not('groupB' in groups)"
// or use the odata helper method
filter: odata`${groupA} in groups and not(${groupB} in groups)`,
});
Üzenetek küldése a csoport összes kapcsolatára
import { WebPubSubServiceClient } from "@azure/web-pubsub";
import { DefaultAzureCredential } from "@azure/identity";
const serviceClient = new WebPubSubServiceClient(
"<Endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
const groupClient = serviceClient.group("<groupName>");
// Add user to the group
await groupClient.addUser("user1");
// Send a JSON message
await groupClient.sendToAll({ message: "Hello world!" });
// Send a plain text message
await groupClient.sendToAll("Hi there!", { contentType: "text/plain" });
// Send a binary message
const payload = new Uint8Array(10);
await groupClient.sendToAll(payload.buffer);
Üzenetek küldése egy felhasználó összes kapcsolatára
import { WebPubSubServiceClient } from "@azure/web-pubsub";
import { DefaultAzureCredential } from "@azure/identity";
const serviceClient = new WebPubSubServiceClient(
"<Endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
// Send a JSON message
await serviceClient.sendToUser("user1", { message: "Hello world!" });
// Send a plain text message
await serviceClient.sendToUser("user1", "Hi there!", { contentType: "text/plain" });
// Send a binary message
const payload = new Uint8Array(10);
await serviceClient.sendToUser("user1", payload.buffer);
Ellenőrizze, hogy a csoport rendelkezik-e kapcsolattal
import { WebPubSubServiceClient } from "@azure/web-pubsub";
import { DefaultAzureCredential } from "@azure/identity";
const serviceClient = new WebPubSubServiceClient(
"<Endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
const groupClient = serviceClient.group("<groupName>");
// close all the connections in the group
await groupClient.closeAllConnections({ reason: "<closeReason>" });
// check if the group has any connections
const hasConnections = await serviceClient.groupExists("<groupName>");
Művelet nyers HTTP-válaszának elérése
import { WebPubSubServiceClient } from "@azure/web-pubsub";
import { DefaultAzureCredential } from "@azure/identity";
const serviceClient = new WebPubSubServiceClient(
"<Endpoint>",
new DefaultAzureCredential(),
"<hubName>",
);
function onResponse(rawResponse) {
console.log(rawResponse);
}
await serviceClient.sendToAll({ message: "Hello world!" }, { onResponse });
Hibaelhárítás
Naplók engedélyezése
A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és válaszok naplójának megtekintéséhez állítsa a AZURE_LOG_LEVEL környezeti változót info.
export AZURE_LOG_LEVEL=verbose
Másik lehetőségként a naplózás futásidőben is engedélyezhető a setLogLevel meghívásával a @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
A naplók engedélyezésére vonatkozó részletesebb útmutatásért tekintse meg a @azure/logger csomag dokumentációit.
Élő nyomkövetés
Az élő forgalom megtekintéséhez használja Élő nyomkövetési a Web PubSub szolgáltatásportálról.
Következő lépések
A kódtár használatára vonatkozó részletes példákért tekintse meg a mintákat könyvtárat.
Hozzájárulás
Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót, amelyből többet is megtudhat a kód összeállításáról és teszteléséről.
Kapcsolódó projektek
Azure SDK for JavaScript