我正在尝试使用我的Azure系统设置SignalR。该设置是相当标准的Azure的应用服务从Azure函数调用SignalR
- 主要门户网站写在ASP.NET MVC
- 执行业务逻辑的云服务工作者的角色。 worker角色在门户写入的队列上进行侦听。由于依赖于传统的C++业务逻辑,我必须使用云服务
当用户从门户网站开始耗时的操作时,我希望云服务能够通知所有连接的浏览器通过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服务总线队列,这似乎是缩放时的建议。所以,在我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函数,并确保在浏览器中信号调用通过。
但是,我不确定这是否是正确的做法。在这种情况下,缩放是否会起作用,还是有更好的方法来迫使信号员将消息广播出去?
谢谢
您应该接受Rob的回答作为答案。好的Stackoverflow礼仪。 – McGuireV10