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


Azure Web PubSub CloudEvents kezelők expresszhez

Az Azure Web PubSub szolgáltatás egy Azure által felügyelt szolgáltatás, amellyel a fejlesztők egyszerűen készíthetnek webalkalmazásokat valós idejű funkciókkal és közzétételi-feliratkozási mintával. Az Azure Web PubSub szolgáltatást minden olyan forgatókönyv használhatja, amely valós idejű közzétételi-feliratkozási üzenetküldést igényel a kiszolgáló és az ü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 igényelnek lekérdezést a kiszolgálóról vagy HTTP-kérések elküldése.

Amikor egy WebSocket-kapcsolat csatlakozik, a Web PubSub szolgáltatás a kapcsolat életciklusát és az üzeneteket CloudEvents formátumú eseményekké alakítja. Ez a kódtár egy expressz köztes szoftvert biztosít a WebSocket-kapcsolat életciklusát és üzeneteit képviselő események kezelésére az alábbi ábrán látható módon:

cloudevents

Az itt használt kifejezések részleteit a Kulcsfogalmak szakaszban ismertetjük.

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-express

npm install @azure/web-pubsub-express

2. Hozzon létre egy WebPubSubEventHandler

const express = require("express");

const { WebPubSubEventHandler } = require("@azure/web-pubsub-express");
const handler = new WebPubSubEventHandler("chat");

const app = express();

app.use(handler.getMiddleware());

app.listen(3000, () =>
  console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);

Fő fogalmak

Kapcsolat

A kapcsolat( más néven ügyfél- vagy ügyfélkapcsolat) a Web PubSub szolgáltatáshoz csatlakoztatott egyéni WebSocket-kapcsolatot jelöli. 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 alatt 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. A felhasználók több kapcsolattal is rendelkezhetnek, például ha egyetlen felhasználó több eszközön vagy több böngészőlapon csatlakozik.

Ügyfélesemények

Az események az ügyfélkapcsolat életciklusa során jönnek létre. Egy egyszerű WebSocket-ügyfélkapcsolat például létrehoz egy connect eseményt, amikor megpróbál csatlakozni a szolgáltatáshoz, egy connected eseményt, amikor sikeresen csatlakozik a szolgáltatáshoz, egy message eseményt, amikor üzeneteket küld a szolgáltatásnak, és egy disconnected eseményt, amikor leválasztja a szolgáltatást.

Eseménykezelő

Az eseménykezelő tartalmazza az ügyfélesemények kezelésére vonatkozó logikát. Az eseménykezelőt előzetesen regisztrálni és konfigurálni kell a szolgáltatásban a portálon vagy az Azure CLI-ben. Az eseménykezelő logika üzemeltetésének helye általában kiszolgálóoldali.

Példák

connect A kérés kezelése és hozzárendelése<userId>

const express = require("express");

const { WebPubSubEventHandler } = require("@azure/web-pubsub-express");
const handler = new WebPubSubEventHandler("chat", {
  handleConnect: (req, res) => {
    // auth the connection and set the userId of the connection
    res.success({
      userId: "<userId>"
    });
  },
  allowedEndpoints: ["https://<yourAllowedService>.webpubsub.azure.com"]
});

const app = express();

app.use(handler.getMiddleware());

app.listen(3000, () =>
  console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);

Csak a megadott végpontok engedélyezése

const express = require("express");

const { WebPubSubEventHandler } = require("@azure/web-pubsub-express");
const handler = new WebPubSubEventHandler("chat", {
  allowedEndpoints: [
    "https://<yourAllowedService1>.webpubsub.azure.com",
    "https://<yourAllowedService2>.webpubsub.azure.com"
  ]
});

const app = express();

app.use(handler.getMiddleware());

app.listen(3000, () =>
  console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);

Egyéni eseménykezelő elérési út beállítása

const express = require("express");

const { WebPubSubEventHandler } = require("@azure/web-pubsub-express");
const handler = new WebPubSubEventHandler("chat", {
  path: "customPath1"
});

const app = express();

app.use(handler.getMiddleware());

app.listen(3000, () =>
  // Azure WebPubSub Upstream ready at http://localhost:3000/customPath1
  console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);

Kapcsolat állapotának beállítása és olvasása

const express = require("express");

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

const handler = new WebPubSubEventHandler("chat", {
  handleConnect(req, res) {
    // You can set the state for the connection, it lasts throughout the lifetime of the connection
    res.setState("calledTime", 1);
    res.success();
  },
  handleUserEvent(req, res) {
    var calledTime = req.context.states.calledTime++;
    console.log(calledTime);
    // You can also set the state here
    res.setState("calledTime", calledTime);
    res.success();
  }
});

const app = express();

app.use(handler.getMiddleware());

app.listen(3000, () =>
  console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);

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 útmutatásért tekintse meg a @azure/logger csomag dokumentációt.

Élő nyomkövetés

Az élő forgalom megtekintéséhez használja a Web PubSub szolgáltatásportál élő nyomköveté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 összeállításáról és teszteléséről.