gpt4 book ai didi

c# - 如何在 .Net Core MVC 中为 Azure SignalR 调用 CosmosDBTrigger 和 HttpResponseMessage?

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:35 25 4
gpt4 key购买 nike

我有一个 .Net Core Web MVC 应用程序,当在 CosmosDB 中触发更改提要时,我想使用 Azure SignalR 向客户端发送通知。

FeedToSignalR 触发 CosmosDB 中的新数据,并通过 SignalR 将其广播给客户端。

SignalRConfiguration 初始化 SignalR Websocket 连接。

问题是我不知道如何调用这些方法。

我可以调用 Program.csStartup.cs 中的方法吗?

public static class SignalRConfiguration
{
private static AzureSignalR signalR = new AzureSignalR(Environment.GetEnvironmentVariable("AzureSignalRConnectionString"));

/// <summary>
/// This HttpTriggered function returns the SignalR configuration to the web client.
/// </summary>
[FunctionName("SignalRConfiguration")]
public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous)]HttpRequestMessage req, TraceWriter log)
{
return req.CreateResponse(HttpStatusCode.OK,
new {
hubUrl = signalR.GetClientHubUrl("cosmicServerlessHub"),
accessToken = signalR.GenerateAccessToken("cosmicServerlessHub")
});
}
}

public static class FeedToSignalR
{
private static AzureSignalR signalR = new AzureSignalR(Environment.GetEnvironmentVariable("AzureSignalRConnectionString"));

/// <summary>
/// This function Triggers upon new documents in the Cosmos DB database and broadcasts them to SignalR connected clients.
/// </summary>
[FunctionName("FeedToSignalR")]
public static async Task Run([CosmosDBTrigger(
databaseName: "ToDoList",
collectionName: "Items",
ConnectionStringSetting = "AzureCosmosDBConnectionString",
LeaseConnectionStringSetting = "AzureCosmosDBConnectionString",
CreateLeaseCollectionIfNotExists = true,
LeaseCollectionName = "leases")]IReadOnlyList<Document> documents, TraceWriter log)
{
if (documents != null && documents.Count > 0)
{
var broadcast = documents.Select((d) => new
{
id = d.GetPropertyValue<string>("id"),
price = d.GetPropertyValue<string>("price")
});

await signalR.SendAsync("cosmicServerlessHub", "NewMessages", JsonConvert.SerializeObject(broadcast));
}
}
}

最佳答案

这是两个函数,每个函数都由不同的事件触发。您的 FeedToSignalR 使用的是 Cosmos DB Trigger当在 Items 集合中添加新文档时,它将自动触发,如函数代码上方的注释中所述。

SignalRConfiguration 另一方面正在使用 HTTP Trigger只要有对其 HTTP 端点的 HTTP 调用,它就会被调用。

如果我正确识别代码,它来自 https://github.com/ealsur/serverlessnotifications

基于explanation :

  1. browser will do an HTTP call到 SignalRConfiguration 函数获取配置
  2. 当输入新消息时,它将save that message in Cosmos DB通过调用 another Function .
  3. 集合中的新文档将触发 Cosmos DB Trigger Function谁将依次通过 Signal R 发送它。

关于c# - 如何在 .Net Core MVC 中为 Azure SignalR 调用 CosmosDBTrigger 和 HttpResponseMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54356647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com