Obslužné rutiny Azure Web PubSub CloudEvents pro Express
Služba Azure Web PubSub je spravovaná služba Azure, která vývojářům pomáhá snadno vytvářet webové aplikace s funkcemi v reálném čase a vzorem publikování a odběru. Službu Azure Web PubSub může použít jakýkoli scénář, který vyžaduje zasílání zpráv publikování a odběru v reálném čase mezi serverem a klienty nebo mezi klienty. Tradiční funkce v reálném čase, které často vyžadují dotazování ze serveru nebo odesílání požadavků HTTP, můžou také využívat službu Azure Web PubSub.
Když se připojení WebSocket připojí, služba Web PubSub transformuje životní cyklus připojení a zprávy na události ve formátu CloudEvents. Tato knihovna poskytuje expresní middleware pro zpracování událostí představujících životní cyklus a zprávy připojení WebSocket, jak je znázorněno v následujícím diagramu:
Podrobnosti o zde použitých termínech jsou popsány v části Klíčové koncepty .
Zdrojový kód | Balíček (NPM) | Referenční dokumentace k | rozhraní APIDokumentace k | produktuVzorky
Začínáme
Aktuálně podporovaná prostředí
- LtS verze Node.js
- Express verze 4.x.x nebo novější
Požadavky
- Předplatné Azure
- Existující koncový bod Azure Web PubSub.
1. Instalace @azure/web-pubsub-express
balíčku
npm install @azure/web-pubsub-express
2. Vytvořte 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}`)
);
Klíčové koncepty
Připojení
Připojení, označované také jako připojení klienta nebo klienta, představuje individuální připojení WebSocket připojené ke službě Web PubSub. Po úspěšném připojení přiřadí služba Web PubSub k tomuto připojení jedinečné ID připojení.
Rozbočovač
Centrum je logický koncept sady klientských připojení. Obvykle používáte jedno centrum pro jeden účel, například centrum chatu nebo centrum oznámení. Když se vytvoří připojení klienta, připojí se k rozbočovači a během své životnosti patří do tohoto centra. Různé aplikace můžou sdílet jednu službu Azure Web PubSub pomocí různých názvů center.
Group (Skupina)
Skupina je podmnožinou připojení k centru. Kdykoliv můžete přidat připojení klienta ke skupině nebo ho ze skupiny odebrat. Například když se klient připojí k chatovací místnosti nebo když klient opustí chatovací místnost, lze tuto chatovací místnost považovat za skupinu. Klient se může připojit k více skupinám a skupina může obsahovat více klientů.
Uživatel
Připojení k web pubsub můžou patřit jednomu uživateli. Uživatel může mít více připojení, například když je jeden uživatel připojený na více zařízeních nebo na více kartách prohlížeče.
Události klienta
Události se vytvářejí během životního cyklu připojení klienta. Například jednoduché připojení klienta WebSocket vytvoří connect
událost při pokusu o připojení ke službě, connected
událost, když se úspěšně připojí ke službě, message
událost, když odesílá zprávy službě, a disconnected
událost, když se odpojí od služby.
Obslužná rutina události
Obslužná rutina události obsahuje logiku pro zpracování událostí klienta. Obslužnou rutinu události je potřeba zaregistrovat a nakonfigurovat ve službě předem prostřednictvím portálu nebo Azure CLI. Místo pro hostování logiky obslužné rutiny událostí se obecně považuje za serverovou stranu.
Příklady
connect
Zpracování požadavku a přiřazení<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}`)
);
Povolit pouze zadané koncové body
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}`)
);
Nastavení vlastní cesty obslužné rutiny události
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}`)
);
Nastavení a čtení stavu připojení
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}`)
);
Řešení potíží
Povolení protokolů
Pokud použijete tuto knihovnu, můžete nastavit následující proměnnou prostředí, abyste získali protokoly ladění.
- Získání protokolů ladění z klientské knihovny služby SignalR
export AZURE_LOG_LEVEL=verbose
Podrobnější pokyny k povolení protokolů najdete v dokumentaci k balíčkům @azure/protokolovacího nástroje.
Živé trasování
K zobrazení živého provozu použijte živé trasování z portálu služby Web PubSub.
Další kroky
Podrobné příklady použití této knihovny najdete v adresáři ukázek .
Přispívání
Pokud chcete přispívat do této knihovny, přečtěte si příručku pro přispívání , kde najdete další informace o tom, jak sestavit a otestovat kód.
Související projekty
Azure SDK for JavaScript