你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 .NET 的 Azure WebJobs Web PubSub 客户端库 - 版本 1.7.0
此扩展提供在 Azure Functions 中接收 Web PubSub Webhook 调用的功能,使你能够轻松编写响应发布到 Web PubSub 的任何事件的函数。
源代码 | 包 | API 参考文档 | 产品文档 | 示例
使用 NuGet 安装 Web PubSub 扩展:
dotnet add package Microsoft.Azure.WebJobs.Extensions.WebPubSub
必须有一个 Azure 订阅 和一个包含 Web PubSub 资源的 Azure 资源组。 按照此 分步教程 创建 Azure Web PubSub 实例。
若要让扩展与 Azure Web PubSub 服务一起使用,需要提供有效的 ConnectionString
。
可以在 Azure 门户中找到 Azure Web PubSub 服务的密钥。
连接字符串 AzureWebJobsStorage
用于根据需要保留处理检查点信息,请参阅 存储注意事项
对于本地开发, local.settings.json
请使用 文件来存储连接字符串, <connection-string>
可以将 设置为 WebPubSubConnectionString
作为扩展中支持的默认名称,也可以通过在函数绑定属性中使用 映射来 Connection = <connection-string>
设置自定义名称:
{
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"<connection-string>": "Endpoint=https://<webpubsub-name>.webpubsub.azure.com;AccessKey=<access-key>;Version=1.0;"
}
}
部署时,请使用 应用程序设置 来设置连接字符串。
请按照 输入绑定教程 了解如何使用此扩展进行生成 WebPubSubConnection
,以使用输入绑定创建与服务的 Websocket 连接。
请按照 输出绑定教程 了解如何使用此扩展发布 Web PubSub 消息。
请遵循触发器绑定教程,了解如何在从服务上游发送事件时触发 Azure 函数。
在 和 UserEvent
事件中Connect
,函数将遵循返回值以发送回服务。 然后,服务将取决于响应以继续请求,否则。 响应和事件是配对的。 例如, Connect
将仅尊重 ConnectEventResponse
或 EventErrorResponse
,而忽略其他返回。 返回 时 EventErrorResponse
,服务将删除客户端连接。 请按照 触发器绑定返回值教程 了解如何使用触发器返回值。
public static class WebPubSubConnectionBindingFunction
{
[FunctionName("WebPubSubConnectionBindingFunction")]
public static WebPubSubConnection Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req,
[WebPubSubConnection(Hub = "hub", UserId = "{query.userid}", Connection = "<connection-string>")] WebPubSubConnection connection)
{
Console.WriteLine("login");
return connection;
}
}
public static class WebPubSubOutputBindingFunction
{
[FunctionName("WebPubSubOutputBindingFunction")]
public static async Task RunAsync(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req,
[WebPubSub(Hub = "hub", Connection = "<connection-string>")] IAsyncCollector<WebPubSubAction> action)
{
await action.AddAsync(WebPubSubAction.CreateSendToAllAction("Hello Web PubSub!", WebPubSubDataType.Text));
}
}
public static class WebPubSubTriggerFunction
{
[FunctionName("WebPubSubTriggerFunction")]
public static void Run(
ILogger logger,
[WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] UserEventRequest request,
string data,
WebPubSubDataType dataType)
{
logger.LogInformation("Request from: {user}, data: {data}, dataType: {dataType}",
request.ConnectionContext.UserId, data, dataType);
}
}
public static class WebPubSubTriggerReturnValueFunction
{
[FunctionName("WebPubSubTriggerReturnValueFunction")]
public static UserEventResponse Run(
[WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] UserEventRequest request)
{
return request.CreateResponse(BinaryData.FromString("ack"), WebPubSubDataType.Text);
}
}
有关故障排除指南,请参阅监视Azure Functions。
阅读 Azure 函数简介 或 创建 Azure 函数指南。
有关构建、测试和参与此库的详细信息,请参阅我们的 CONTRIBUTING.md 。
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 cla.microsoft.com。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。