Megosztás a következőn keresztül:


Azure Web PubSub szolgáltatás ügyfélkódtára JavaScripthez – 1.1.1-es verzió

Az Azure Web PubSub szolgáltatás egy Azure által felügyelt szolgáltatás, amellyel a fejlesztők egyszerűen hozhatnak létre webalkalmazásokat valós idejű funkciókkal és közzétételi-feliratkozási mintával. Az Azure Web PubSub szolgáltatást bármely olyan forgatókönyvben használhatja, amely valós idejű közzétételi-feliratkozási üzenetküldést igényel a kiszolgálók és ügyfelek között, illetve az ügyfelek között. Az Azure Web PubSub szolgáltatást is használhatják a hagyományos valós idejű funkciók, amelyek gyakran lekérdezést igényelnek a kiszolgálóról vagy HTTP-kérések elküldéséhez.

Ezt a kódtárat az alkalmazáskiszolgáló oldalán használhatja a WebSocket-ügyfélkapcsolatok kezeléséhez, az alábbi ábrán látható módon:

túlcsordulás.

  • Üzenetek küldése központoknak és csoportoknak.
  • Üzenetek küldése adott felhasználóknak és kapcsolatoknak.
  • Felhasználók és kapcsolatok csoportokba rendezése.
  • 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 leírását a Fő fogalmak szakaszban találja.

Forráskód | Csomag (NPM) | API-referenciadokumentáció | Termékdokumentáció | Minták

Első lépések

Jelenleg támogatott környezetek

Előfeltételek

1. A csomag telepítése @azure/web-pubsub

npm install @azure/web-pubsub

2. WebPubSubServiceClient létrehozása és hitelesítése

const { WebPubSubServiceClient } = require("@azure/web-pubsub");

const serviceClient = new WebPubSubServiceClient("<ConnectionString>", "<hubName>");

A hitelesítéshez WebPubSubServiceClient egy végpontot és egy következőt AzureKeyCredentialis használhat:

const { WebPubSubServiceClient, AzureKeyCredential } = require("@azure/web-pubsub");

const key = new AzureKeyCredential("<Key>");
const serviceClient = new WebPubSubServiceClient("<Endpoint>", key, "<hubName>");

Vagy hitelesítés az WebPubSubServiceClientAzure Active Directory használatával

  1. A @azure/identity függőség telepítése
npm install @azure/identity
  1. Frissítse a forráskódot a következő használatára DefaultAzureCredential:
const { WebPubSubServiceClient, AzureKeyCredential } = require("@azure/web-pubsub");
const { DefaultAzureCredential } = require("@azure/identity");

const key = new DefaultAzureCredential();
const serviceClient = new WebPubSubServiceClient("<Endpoint>", key, "<hubName>");

Fő fogalmak

Kapcsolat

A kapcsolat, más néven ügyfél- vagy ügyfélkapcsolat, a Web PubSub szolgáltatáshoz csatlakoztatott különálló WebSocket-kapcsolatot jelöl. Sikeres csatlakozás esetén a Web PubSub szolgáltatás egyedi kapcsolatazonosítót rendel ehhez a kapcsolathoz.

Hub

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. Az ügyfélkapcsolat létrehozásakor csatlakozik egy központhoz, és annak élettartama során az adott központhoz tartozik. A különböző alkalmazások különböző központnevek használatával megoszthatnak egy Azure Web PubSub szolgáltatást.

Group

A csoport a központtal létesített kapcsolatok részhalmaza. Bármikor hozzáadhat ü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ő. Az ügyfelek több csoporthoz is csatlakozhatnak, és egy csoport 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 csatlakozik, ü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

const { WebPubSubServiceClient } = require("@azure/web-pubsub");

const serviceClient = new WebPubSubServiceClient("<ConnectionString>", "<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" ] });

// return the token to the WebSocket client

Üzenetek küldése egy központ összes kapcsolatára

const { WebPubSubServiceClient } = require("@azure/web-pubsub");

const serviceClient = new WebPubSubServiceClient("<ConnectionString>", "<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 szintaxissal kapcsolatos filter részletekért lásd: Az Azure Web PubSub OData szűrőszintaxisa.

const { WebPubSubServiceClient, odata } = require("@azure/web-pubsub");

const serviceClient = new WebPubSubServiceClient("<ConnectionString>", "<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 egy csoport összes kapcsolatára

const { WebPubSubServiceClient } = require("@azure/web-pubsub");

const serviceClient = new WebPubSubServiceClient("<ConnectionString>", "<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

const { WebPubSubServiceClient } = require("@azure/web-pubsub");

const serviceClient = new WebPubSubServiceClient("<ConnectionString>", "<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

const { WebPubSubServiceClient } = require("@azure/web-pubsub");
const WebSocket = require("ws");

const serviceClient = new WebPubSubServiceClient("<ConnectionString>", "<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>");

Hozzáférés egy művelet nyers HTTP-válaszához

const { WebPubSubServiceClient } = require("@azure/web-pubsub");

function onResponse(rawResponse) {
  console.log(rawResponse);
}
const serviceClient = new WebPubSubServiceClient("<ConnectionString>", "<hubName>");
await serviceClient.sendToAll({ message: "Hello world!" }, { onResponse });

Hibaelhárítás

Naplók engedélyezése

A kódtár használatakor a következő környezeti változót állíthatja be a hibakeresési naplók lekéréséhez.

  • Hibakeresési naplók lekérése a SignalR ügyfélkódtárból
export AZURE_LOG_LEVEL=verbose

A naplók engedélyezésére vonatkozó részletesebb utasításokért tekintse meg a @azure/logger csomag dokumentációját.

Élő nyomkövetés

Az élő forgalom megtekintéséhez használja a Web PubSub szolgáltatásportál élő nyomkövetési szolgáltatását.

Következő lépések

A kódtár használatára vonatkozó részletes példákért tekintse meg a mintakönyvtárat.

Közreműködé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 buildeléséhez és teszteléséhez.