我正在尝试使用Azure系统设置SignalR。设置相当标准
当用户从门户开始耗时的操作时,我希望云服务能够通过SignalR通知所有连接的浏览器云服务已完成。
我认为我可以使用Azure函数(如SignalR客户端)来执行此操作,可以触发该操作以强制SignalR使用Azure函数中的代码广播消息
HubConnection hub = new HubConnection(*URL OF PORTAL GOES HERE*);
var proxy = hub.CreateHubProxy(*NAME OF HUB GOES HERE*);
await hub.Start();
await proxy.Invoke("Hello"); // Name of default hub method
ASP.NET MVC方面,我也使用Azure Service Bus队列,这似乎是扩展时的建议。所以,在我的Startup.cs中我有
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalHost.DependencyResolver.UseServiceBus(@"*SERVICE BUS CONNNECTION STRING GOES HERE*", "blah");
app.MapSignalR();
}
}
注意:为了使其与最新的SignalR一起工作,我必须使用Microsoft.AspNet.SignalR.ServiceBus3 nuget包,否则我在调用UseServiceBus时遇到异常。
现在,一切似乎都有效。我可以从PostMan调用Azure功能,并且在我的浏览器中确实可以通过信号器调用。
但是,我不确定这是否正确。在这种情况下,缩放是否会起作用,还是有更好的方法可以强制信号器广播消息?
谢谢
答案 0 :(得分:4)
你有正确的想法。我正在运行相同的架构,除了我使用WebJob而不是Azure功能。几点: