我正在使用 Azure 函数从事件中心读取消息并将其发布到 SignalR 实例。我有连接到 SignalR 实例并正在接收消息的前端 JavaScript。我想要的是根据传入的值动态设置我的 Azure Function 库中的“HubName”属性。这是可能的吗?我在下面包含了我的 Azure Function 调用。在这两种方法中,我想动态设置 HubName 值,该值被硬编码为“deviceMessages”
public static SignalRConnectionInfo GetSignalRInfo(
[HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequest req,
[SignalRConnectionInfo(HubName = "deviceMessages")] SignalRConnectionInfo connectionInfo)
{
return connectionInfo;
}
public static Task SendMessage(
[EventHubTrigger("{EventHubName}", Connection = "EventHubConnectionAppSetting")]string myEventHubMessage,
[SignalR(HubName = "deviceMessages")] IAsyncCollector<SignalRMessage> signalRMessages)
{
return signalRMessages.AddAsync(
new SignalRMessage
{
Target = "newMessage",
Arguments = new[] { myEventHubMessage }
});
}
最佳答案
您可以通过命令式方式进行绑定(bind)。在函数签名中使用IBinder binder
,您可以在运行时创建绑定(bind)。
var signalRAttribute = new SignalRAttribute(/* your settings here */));
var outputMessages = await binder.BindAsync<IAsyncCollector<SignalRMessage>>(signalRAttribute);
这里也有很好的示例:
How do I use Binder to perform dynamic bindings in my C# Function?
这里:
https://weblogs.asp.net/sfeldman/azure-functions-to-make-audit-queue-and-auditors-happy
关于javascript - SignalR 动态集线器名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53192113/