SuperAPI AI 工具集

azure-web-pubsub-ts

编程与开发

查看项目

更新于 10-16 01:57

技能介绍

用途

该技能用于在 TypeScript 中通过 Azure Web PubSub 实现基于 WebSocket 的实时消息与发布/订阅模式通信,包含服务端管理、客户端实时收发消息以及服务端事件处理三类能力。

主要能力

服务端(@azure/web-pubsub)支持:以连接字符串、DefaultAzureCredential 或 AzureKeyCredential 进行身份验证;生成客户端访问令牌(可带 userId、roles、groups、过期时间);向 Hub 内所有连接、指定用户、指定连接发送消息,并支持 text/plain 等 contentType 与 OData filter 过滤;分组管理(添加用户/连接、移除用户、向分组发送、关闭分组内所有连接);连接管理(判断用户/连接是否存在、关闭连接、关闭某用户所有连接、关闭全部连接)以及授予/撤销权限。

客户端(@azure/web-pubsub-client)支持:通过直接访问 URL 或 getClientAccessUrl 动态协商端点连接;注册 connected、disconnected、stopped、group-message、server-message、rejoin-group-failed 等事件处理器;加入分组后向分组发送文本或 JSON 消息,支持 noEcho、fireAndForget 等选项;通过 sendEvent 向服务端发送自定义事件。

Express(@azure/web-pubsub-express)提供 WebPubSubEventHandler 中间件,可在 handleConnect 中校验并批准/拒绝连接(设置 userId、groups、roles),在 handleUserEvent 中处理自定义事件,并提供非阻塞的 onConnected、onDisconnected 回调,同时可配合协商端点返回令牌 URL。

使用方式

安装命令:

npm install @azure/web-pubsub @azure/identity
npm install @azure/web-pubsub-client
npm install @azure/web-pubsub-express

需配置环境变量 WEBPUBSUB_CONNECTION_STRING 与 WEBPUBSUB_ENDPOINT。服务端创建 WebPubSubServiceClient 时传入连接字符串或凭据及 hub 名称;客户端创建 WebPubSubClient 并在调用 start 之前注册事件处理器;Express 中通过 app.use(handler.getMiddleware()) 挂载中间件,并实现 /negotiate 端点返回 token.url。

适用场景

适用于需要在 TypeScript 项目中实现实时聊天、房间/频道分组广播、服务端向特定用户或连接推送消息、以及通过服务端审批连接与处理客户端自定义事件的场景。

限制

资料列出多项最佳实践:生产环境建议使用 Entra ID 与 DefaultAzureCredential;注册处理器需在 start 之前,以免错过初始事件;使用分组组织按主题或房间的消息;客户端默认自动重连;在 handleConnect 中尽早拒绝未授权连接;需要时用 noEcho 避免消息回显给发送者。此外资料明确:仅在任务与上述范围清晰匹配时使用该技能;输出不能替代针对具体环境的验证、测试或专家评审;如缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。