Azure.Messaging.WebPubSub 1.4.0

前缀已保留
dotnet add package Azure.Messaging.WebPubSub --version 1.4.0                
NuGet\Install-Package Azure.Messaging.WebPubSub -Version 1.4.0                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用了 NuGet 模块的 Install-Package
<PackageReference Include="Azure.Messaging.WebPubSub" Version="1.4.0" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用该包。
paket add Azure.Messaging.WebPubSub --version 1.4.0                
#r "nuget: Azure.Messaging.WebPubSub, 1.4.0"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此复制到交互式工具或脚本的源代码中以引用包。
// Install Azure.Messaging.WebPubSub as a Cake Addin
#addin nuget:?package=Azure.Messaging.WebPubSub&version=1.4.0

// Install Azure.Messaging.WebPubSub as a Cake Tool
#tool nuget:?package=Azure.Messaging.WebPubSub&version=1.4.0                

Azure Web PubSub 服务 .NET 客户端库

Azure Web PubSub 服务 是一个 Azure 管理服务,可以帮助开发者轻松构建具有实时功能和发布/订阅模式的 Web 应用程序。任何需要在服务器和客户端之间或客户端之间进行实时发布/订阅消息传递的场景都可以使用 Azure Web PubSub 服务。通常需要从服务器轮询或提交 HTTP 请求的传统实时功能也可以使用 Azure Web PubSub 服务。

您可以使用此库在应用程序服务器端管理 WebSocket 客户端连接,如下所示

overflow

使用此库

  • 向 hub 和组发送消息。
  • 向特定用户和连接发送消息。
  • 将用户和连接组织到组中。
  • 关闭连接
  • 对现有连接授予权限、撤销权限和检查权限

关于此处所用术语的详细信息,请参阅核心概念部分。

源代码 | | API 参考文档 | 产品文档 | 示例

入门

安装包

NuGet安装客户端库

dotnet add package Azure.Messaging.WebPubSub

先决条件

  • 一个Azure 订阅
  • 现有的 Azure Web PubSub 服务实例。

创建和认证 WebPubSubServiceClient

为了与该服务交互,您需要创建一个 WebPubSubServiceClient 类的实例。为了实现这一点,您需要连接字符串或密钥,您可以在 Azure 门户中访问它们。

// Create a WebPubSubServiceClient that will authenticate using a key credential.
var serviceClient = new WebPubSubServiceClient(new Uri(endpoint), "some_hub", new AzureKeyCredential(key));

核心概念

连接

连接,也称为客户端或客户端连接,代表它连接到 Web PubSub 服务的单个 WebSocket 连接。如果连接成功,Web PubSub 服务将分配一个唯一的连接 ID 给此连接。

中心点

中心点是代表一组客户端连接的逻辑概念。通常,您使用一个中心点来完成一个目标,例如聊天中心点或通知中心点。当创建客户端连接时,它连接到中心点,在其生命周期内,它属于该中心点。不同的应用程序可以使用不同的中心点名称共享一个 Azure Web PubSub 服务。

组是中心点的连接子集。您可以在任何时候将客户端连接添加到组中,或从组中移除客户端连接。例如,当客户端加入聊天室时,或当客户端离开聊天室时,这个聊天室可以被视为一个组。客户端可以加入多个组,且一个组可以包含多个客户端。

用户

Web PubSub 的连接可以属于一个用户。用户可能有多个连接,例如,当单个用户跨多个设备或多个浏览标签页连接。

消息

当客户端连接时,它可以通过 WebSocket 连接向上游应用发送消息,或接收上游应用发送的消息。

示例

生成包含连接访问令牌的完整 URI,用于连接 Azure Web PubSub

// Generate client access URI for userA
serviceClient.GetClientAccessUri(userId: "userA");
// Generate client access URI with initial permissions
serviceClient.GetClientAccessUri(roles: new string[] { "webpubsub.joinLeaveGroup.group1", "webpubsub.sendToGroup.group1" });
// Generate client access URI with initial groups to join when the connection connects
serviceClient.GetClientAccessUri(groups: new string[] { "group1", "group2" });

向连接发送消息

向所有客户端广播文本消息
var serviceClient = new WebPubSubServiceClient(connectionString, "some_hub");

serviceClient.SendToAll("Hello World!");
向所有客户端广播 JSON 消息
var serviceClient = new WebPubSubServiceClient(connectionString, "some_hub");

serviceClient.SendToAll(RequestContent.Create(
        new
        {
            Foo = "Hello World!",
            Bar = 42
        }),
        ContentType.ApplicationJson);
向所有客户端广播二进制消息
var serviceClient = new WebPubSubServiceClient(connectionString, "some_hub");

Stream stream = BinaryData.FromString("Hello World!").ToStream();
serviceClient.SendToAll(RequestContent.Create(stream), ContentType.ApplicationOctetStream);
使用筛选器向客户端广播消息

Azure Web PubSub 支持 OData 筛选器语法,用于筛选要发送消息的连接。

有关 filter 语法的详细信息,请参阅Azure Web PubSub 的 OData 筛选器语法

var serviceClient = new WebPubSubServiceClient(connectionString, "some_hub");

// Use filter to send text message to anonymous connections
serviceClient.SendToAll(
        RequestContent.Create("Hello World!"),
        ContentType.TextPlain,
        filter: ClientConnectionFilter.Create($"userId eq {null}"));

// Use filter to send JSON message to connections in groupA but not in groupB
var group1 = "GroupA";
var group2 = "GroupB";
serviceClient.SendToAll(RequestContent.Create(
        new
        {
            Foo = "Hello World!",
            Bar = 42
        }),
        ContentType.ApplicationJson,
        filter: ClientConnectionFilter.Create($"{group1} in groups and not({group2} in groups)"));

连接管理

将某些用户的连接添加到某些组
client.AddUserToGroup("some_group", "some_user");

// Avoid sending messages to users who do not exist.
if (client.UserExists("some_user").Value)
{
    client.SendToUser("some_user", "Hi, I am glad you exist!");
}

client.RemoveUserFromGroup("some_group", "some_user");
从所有组中移除连接
var client = new WebPubSubServiceClient(connectionString, "some_hub");
client.RemoveConnectionFromAllGroups("some_connection");

故障排除

设置控制台日志

如果您想要深入了解您对服务的请求,您也可以轻松启用控制台日志

下一步

请参阅示例目录,以获得如何使用此库的详细示例。

您还可以在这里找到更多示例:更多示例

贡献

本工程欢迎贡献和建议。大多数贡献都需要您同意一份贡献者许可协议(CLA),声明您有权并且确实有权授予我们使用您贡献的权利。有关详细信息,请访问https://cla.microsoft.com。

在您提交拉取请求时,CLA机器人会自动确定您是否需要提供CLA,并相应地标记PR(例如,标签、注释)。只需按照机器人提供的说明操作。您只需在其他所有使用我们CLA的仓中做一次。

本工程采用了微软开源行为准则。有关更多信息,请参阅行为准则常见问题,或通过[email protected]联系以提出更多问题或意见。

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET 标准库 netstandard2.0 兼容。 netstandard2.1 已计算。
.NET 框架 net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET 标准库 的信息。

NuGet 包 (9)

显示依赖于 Azure.Messaging.WebPubSub 的前 5 个 NuGet 包

下载
Microsoft.Azure.WebPubSub.AspNetCore

Azure WebPubSub 服务的 SDK 客户端库

Microsoft.Azure.WebJobs.Extensions.WebPubSub

Azure Functions的WebPubSub服务扩展

Blazor.Ninja.Client.Local

Blazor.Ninja本地客户端包

Toggly.FeatureManagement

Toggly.FeatureManagement是Microsoft.FeatureManagement的扩展,用于处理功能状态变更、装饰和注册当功能开启时注入的服务、功能使用跟踪,以及与toggly.io的集成

Development.SDK.RPC

用于调用RPC函数的软件开发包。

GitHub仓库 (1)

显示依赖于Azure.Messaging.WebPubSub的最受欢迎的1个GitHub仓库

仓库 星标
Azure/azure-sdk-for-net
此仓库用于.NET Azure SDK的活跃开发。对于SDK的用户,我们建议访问我们的公共开发者文档 https://learn.microsoft.com/dotnet/azure/ 或我们的版本开发者文档 https://azure.github.io/azure-sdk-for-net。
版本 下载 最后更新
1.4.0 993 8/9/2024
1.3.0 601,660 11/21/2022
1.2.0 172,621 11/7/2022
1.1.0 4,304 10/29/2022
1.1.0-beta.1 1,082 8/11/2022
1.0.0 356,132 11/12/2021
1.0.0-beta.3 40,051 9/8/2021
1.0.0-beta.2 11,588 7/15/2021
1.0.0-beta.1 32,767 4/26/2021