您是否可以创建一个Hub,您可以从工作角色和Web角色向客户端发送消息,或者具有多个可以向客户端发送消息的工作角色?
或者建议使用SignalR向客户端发送消息以使用Web角色处理客户端的所有消息,并使用队列将消息从所有其他角色发送到客户端。另一个选项,我看到我将拥有一个所有每个工作者角色和Web角色的集线器,并且您连接到几个不同的集线器?这对我来说似乎是一种糟糕的态度。
我们的托管服务的最终目标是至少拥有2个Web角色和3-5个工作角色,系统非常受事件驱动,并希望在发生时将消息推送到Web客户端,而不是添加另一个阶段用于向连接的客户端发送消息的事件管道。
答案 0 :(得分:2)
您可以让Azure工作人员角色通过Ajax或SignalR .NET client向您的Web角色发出请求。然后,您可以让您的Web角色代理从您的工作者角色发送到“正常”(可能是JS)客户端的消息。您可以使用组或特殊工作者角色Hub来区分您的工作者角色客户端和普通客户端。
如果您希望将来自工作者角色的消息作为Ajax响应的一部分进行代理,您可能希望使用GetHubContext
来查看broadcast to clients from outside a hub。