Azure Web PubSub CloudEvents-hanterare för Express
Azure Web PubSub-tjänsten är en Azure-hanterad tjänst som hjälper utvecklare att enkelt skapa webbprogram med realtidsfunktioner och mönster för publicera och prenumerera. Alla scenarier som kräver publicera-prenumerera-meddelanden i realtid mellan server och klienter eller mellan klienter kan använda Azure Web PubSub-tjänsten. Traditionella realtidsfunktioner som ofta kräver avsökning från servern eller skickar HTTP-begäranden kan också använda Tjänsten Azure Web PubSub.
När en WebSocket-anslutning ansluter omvandlar Web PubSub-tjänsten anslutningens livscykel och meddelanden till händelser i CloudEvents-format. Det här biblioteket innehåller ett expressmellanprogram för att hantera händelser som representerar WebSocket-anslutningens livscykel och meddelanden, enligt diagrammet nedan:
Information om termerna som används här beskrivs i avsnittet Viktiga begrepp .
| KällkodPaket (NPM) | API-referensdokumentation | Produktdokumentation | Prover
Komma igång
Miljöer som stöds för närvarande
- LTS-versioner av Node.js
- Express version 4.x.x eller senare
Förutsättningar
- En Azure-prenumeration.
- En befintlig Azure Web PubSub-slutpunkt.
1. Installera @azure/web-pubsub-express
paketet
npm install @azure/web-pubsub-express
2. Skapa en 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}`)
);
Viktiga begrepp
Anslutning
En anslutning, även kallad klient- eller klientanslutning, representerar en enskild WebSocket-anslutning som är ansluten till Web PubSub-tjänsten. När anslutningen är klar tilldelas ett unikt anslutnings-ID till den här anslutningen av Web PubSub-tjänsten.
Hubb
En hubb är ett logiskt begrepp för en uppsättning klientanslutningar. Vanligtvis använder du en hubb för ett syfte, till exempel en chatthubb eller en meddelandehubb. När en klientanslutning skapas ansluter den till en hubb och under dess livslängd tillhör den hubben. Olika program kan dela en Azure Web PubSub-tjänst med hjälp av olika hubbnamn.
Group
En grupp är en delmängd av anslutningarna till hubben. Du kan lägga till en klientanslutning till en grupp eller ta bort klientanslutningen från gruppen när du vill. När en klient till exempel ansluter till ett chattrum, eller när en klient lämnar chattrummet, kan det här chattrummet anses vara en grupp. En klient kan ansluta till flera grupper och en grupp kan innehålla flera klienter.
Användare
Anslutningar till Web PubSub kan tillhöra en användare. En användare kan ha flera anslutningar, till exempel när en enskild användare är ansluten till flera enheter eller flera webbläsarflikar.
Klienthändelser
Händelser skapas under livscykeln för en klientanslutning. En enkel WebSocket-klientanslutning skapar till exempel en connect
händelse när den försöker ansluta till tjänsten, en connected
händelse när den har anslutits till tjänsten, en message
händelse när den skickar meddelanden till tjänsten och en disconnected
händelse när den kopplar från tjänsten.
Händelsehanterare
Händelsehanteraren innehåller logiken för att hantera klienthändelserna. Händelsehanteraren måste registreras och konfigureras i tjänsten via portalen eller Azure CLI i förväg. Platsen som ska vara värd för händelsehanterarlogik betraktas vanligtvis som serversidan.
Exempel
connect
Hantera begäran och tilldela<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}`)
);
Tillåt endast angivna slutpunkter
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}`)
);
Ange sökväg för anpassad händelsehanterare
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}`)
);
Ange och läsa anslutningstillstånd
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}`)
);
Felsökning
Aktivera loggar
Du kan ange följande miljövariabel för att hämta felsökningsloggarna när du använder det här biblioteket.
- Hämta felsökningsloggar från SignalR-klientbiblioteket
export AZURE_LOG_LEVEL=verbose
Mer detaljerade anvisningar om hur du aktiverar loggar finns i dokumentationen om @azure-/loggningspaket.
Livespårning
Använd Live Trace från Web PubSub-tjänstportalen för att visa livetrafik.
Nästa steg
Ta en titt på exempelkatalogen för detaljerade exempel på hur du använder det här biblioteket.
Bidra
Om du vill bidra till det här biblioteket kan du läsa bidragsguiden om du vill veta mer om hur du skapar och testar koden.
Relaterade projekt
Azure SDK for JavaScript