Skip to main content Skills Marktplatz Entdecken und erkunden Sie KI-Skills, die von der Community erstellt wurden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Prompt kopierenPrompt-Details anzeigen Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
npx skills add https://github.com/BEKO2210/Firstbrain --skill azure-web-pubsub-tsDer Befehl bleibt in einer Zeile. Scrollen Sie horizontal, um ihn vor dem Kopieren vollständig zu prüfen.
Sie bevorzugen eine lokale Kopie? Laden Sie die Dateien herunter, die SkillsMP derzeit vorliegen.
ZIP herunterladen Herunterladen... Mehr aus diesem Repository
Verwandte Berufe SOC
Basierend auf der SOC-Berufsklassifikation
name azure-web-pubsub-ts description Real-time messaging with WebSocket connections and pub/sub patterns. type skill created 2026-02-27T00:00:00.000Z domain cloud-infrastructure category azure risk unknown source community tags ["skill","cloud-infrastructure","azure","web","pubsub"]
Azure Web PubSub SDKs for TypeScript
Real-time messaging with WebSocket connections and pub/sub patterns.
Installation
npm install @azure/web-pubsub @azure/identity
npm install @azure/web-pubsub-client
npm install @azure/web-pubsub-express
Environment Variables
WEBPUBSUB_CONNECTION_STRING=Endpoint=https://<resource>.webpubsub.azure.com;AccessKey=<key>;Version=1.0;
WEBPUBSUB_ENDPOINT=https://<resource>.webpubsub.azure.com
Server-Side: WebPubSubServiceClient
Authentication
import { WebPubSubServiceClient , AzureKeyCredential } from "@azure/web-pubsub" ;
import { DefaultAzureCredential } from "@azure/identity" ;
const client = new WebPubSubServiceClient (
process.env .WEBPUBSUB_CONNECTION_STRING !,
"chat"
);
const client2 = new WebPubSubServiceClient (
process.env .WEBPUBSUB_ENDPOINT !,
new DefaultAzureCredential (),
"chat"
);
const client3 = new WebPubSubServiceClient (
process.env .WEBPUBSUB_ENDPOINT !,
new ( ),
);
AzureKeyCredential
"<access-key>"
"chat"
Generate Client Access Token
const token = await client.getClientAccessToken ();
console .log (token.url );
const userToken = await client.getClientAccessToken ({
userId : "user123" ,
});
const permToken = await client.getClientAccessToken ({
userId : "user123" ,
roles : [
"webpubsub.joinLeaveGroup" ,
"webpubsub.sendToGroup" ,
"webpubsub.sendToGroup.chat-room" ,
],
groups : ["chat-room" ],
expirationTimeInMinutes : 60 ,
});
Send Messages
await client.sendToAll ({ message : "Hello everyone!" });
await client.sendToAll ("Plain text" , { contentType : "text/plain" });
await client.sendToUser ("user123" , { message : "Hello!" });
await client.sendToConnection ("connectionId" , { data : "Direct message" });
await client.sendToAll ({ message : "Filtered" }, {
filter : "userId ne 'admin'" ,
});
Group Management const group = client.group ("chat-room" );
await group.addUser ("user123" );
await group.addConnection ("connectionId" );
await group.removeUser ("user123" );
await group.sendToAll ({ message : "Group message" });
await group.closeAllConnections ({ reason : "Maintenance" });
Connection Management
const userExists = await client.userExists ("user123" );
const connExists = await client.connectionExists ("connectionId" );
await client.closeConnection ("connectionId" , { reason : "Kicked" });
await client.closeUserConnections ("user123" );
await client.closeAllConnections ();
await client.grantPermission ("connectionId" , "sendToGroup" , { targetName : "chat" });
await client.revokePermission ("connectionId" , "sendToGroup" , { targetName : "chat" });
Client-Side: WebPubSubClient
Connect import { WebPubSubClient } from "@azure/web-pubsub-client" ;
const client = new WebPubSubClient ("<client-access-url>" );
const client2 = new WebPubSubClient ({
getClientAccessUrl : async () => {
const response = await fetch ("/negotiate" );
const { url } = await response.json ();
return url;
},
});
client.on ("connected" , (e ) => {
console .log (`Connected: ${e.connectionId} ` );
});
client.on ("group-message" , (e ) => {
console .log (`${e.message.group} : ${e.message.data} ` );
});
await client.start ();
Send Messages
await client.joinGroup ("chat-room" );
await client.sendToGroup ("chat-room" , "Hello!" , "text" );
await client.sendToGroup ("chat-room" , { type : "message" , content : "Hi" }, "json" );
await client.sendToGroup ("chat-room" , "Hello" , "text" , {
noEcho : true ,
fireAndForget : true ,
});
await client.sendEvent ("userAction" , { action : "typing" }, "json" );
Event Handlers
client.on ("connected" , (e ) => {
console .log (`Connected: ${e.connectionId} , User: ${e.userId} ` );
});
client.on ("disconnected" , (e ) => {
console .log (`Disconnected: ${e.message} ` );
});
client.on ("stopped" , () => {
console .log ("Client stopped" );
});
client.on ("group-message" , (e ) => {
console .log (`[${e.message.group} ] ${e.message.fromUserId} : ${e.message.data} ` );
});
client.on ("server-message" , (e ) => {
console .log (`Server: ${e.message.data} ` );
});
client.on ("rejoin-group-failed" , (e ) => {
console .log (`Failed to rejoin ${e.group} : ${e.error} ` );
});
Express Event Handler import express from "express" ;
import { WebPubSubEventHandler } from "@azure/web-pubsub-express" ;
const app = express ();
const handler = new WebPubSubEventHandler ("chat" , {
path : "/api/webpubsub/hubs/chat/" ,
handleConnect : (req, res ) => {
if (!req.claims ?.sub ) {
res.fail (401 , "Authentication required" );
return ;
}
res.success ({
userId : req.claims .sub [0 ],
groups : ["general" ],
roles : ["webpubsub.sendToGroup" ],
});
},
handleUserEvent : (req, res ) => {
console .log (`Event from ${req.context.userId} :` , req.data );
res.success (`Received: ${req.data} ` , "text" );
},
onConnected : (req ) => {
console .log (`Client connected: ${req.context.connectionId} ` );
},
onDisconnected : (req ) => {
console .log (`Client disconnected: ${req.context.connectionId} ` );
},
});
app.use (handler.getMiddleware ());
app.get ("/negotiate" , async (req, res) => {
const token = await serviceClient.getClientAccessToken ({
userId : req.user ?.id ,
});
res.json ({ url : token.url });
});
app.listen (8080 );
Key Types
import {
WebPubSubServiceClient ,
WebPubSubGroup ,
GenerateClientTokenOptions ,
HubSendToAllOptions ,
} from "@azure/web-pubsub" ;
import {
WebPubSubClient ,
WebPubSubClientOptions ,
OnConnectedArgs ,
OnGroupDataMessageArgs ,
} from "@azure/web-pubsub-client" ;
import {
WebPubSubEventHandler ,
ConnectRequest ,
UserEventRequest ,
ConnectResponseHandler ,
} from "@azure/web-pubsub-express" ;
Best Practices
Use Entra ID auth - DefaultAzureCredential for production
Register handlers before start - Don't miss initial events
Use groups for channels - Organize messages by topic/room
Handle reconnection - Client auto-reconnects by default
Validate in handleConnect - Reject unauthorized connections early
Use noEcho - Prevent message echo back to sender when needed
When to Use This skill is applicable to execute the workflow or actions described in the overview.
Connections
Domain: [[Cloud & Infrastruktur]]
Kategorie: [[Microsoft Azure]]
Navigation: [[Skills Uebersicht]], [[Home]]