通过无服务器 Azure SignalR 触发函数向用户发送消息,同时将有效负载存储到 Azure 存储帐户表

问题描述 投票:0回答:1

我有以下 C# 代码,用于向用户发送消息:

[Function(nameof(SendToUser))]
[SignalROutput(HubName = "chat", ConnectionStringSetting = "SignalRConnection")]
public static SignalRMessageAction SendToUser([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req)
{
    using var bodyReader = new StreamReader(req.Body);
    return new SignalRMessageAction("newMessage")
    {
        Arguments = new[] { bodyReader.ReadToEnd() },
        UserId = "userToSend",
    };
}

当使用输出表绑定而不是azure存储帐户的SDK触发此signalR函数时,我还想将对象的json有效负载保存到Azure存储帐户的表中。是否可以将

SignalROutput
TableOutput
结合起来,使上面的代码看起来像下面的模式?

public class MyTableData : Azure.Data.Tables.ITableEntity
{
    public string Text { get; set; }

    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public DateTimeOffset? Timestamp { get; set; }
    public ETag ETag { get; set; }
}

[Function(nameof(SendToUser))]
[SignalROutput(HubName = "chat", ConnectionStringSetting = "SignalRConnection")]
[TableOutput("OutputTable", Connection = "AzureWebJobsStorage")]
public static object[] SendToUser([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req)
{
    using var bodyReader = new StreamReader(req.Body);
    return
    [
    new SignalRMessageAction("newMessage")
    {
        Arguments = new[] { bodyReader.ReadToEnd() },
        UserId = "userToSend",
    },
    new MyTableData()
    {
       Text = "Test text",
       PartitionKey = "key",
       RowKey = "myrowkey",
       Timestamp = DateTime.Now,
       ETag = "tag"
    }
    ];
}
azure-functions signalr azure-signalr
1个回答
0
投票

同一个方法不可能同时拥有两个输出属性,但本文介绍了如何实现多个 Azure Functions 输出的目标。

© www.soinside.com 2019 - 2024. All rights reserved.