【问题标题】:using SignalR in Windows Azure worker role(s) and in web role(s)在 Windows Azure 辅助角色和 Web 角色中使用 SignalR
【发布时间】:2013-03-20 18:05:16
【问题描述】:

您能否创建一个集线器,让您可以从工作角色和 Web 角色向客户端发送消息,或者有多个不同的工作角色可以向客户端发送消息?

或者是使用 SignalR 向客户端发送消息的推荐方式,以拥有一个处理发送给客户端的所有消息的 Web 角色,并且您将使用队列从所有其他角色向客户端发送消息。我看到的另一个选项是我将为所有每个工作角色和 Web 角色都有一个集线器,并且您连接到几个不同的集线器?这对我来说似乎是一个不好的方法。

我们托管服务的最终目标是至少有 2 个 Web 角色和 3-5 个工作角色,并且系统是非常受事件驱动的,并且希望在消息发生时将消息推送到 Web 客户端,而不是在其中添加另一个阶段用于向连接的客户端发送消息的事件管道。

【问题讨论】:

  • 我找到了答案:你可以做到。如果您创建一个ServiceBusScaleoutConfiguration
    GlobalHost.DependencyResolver.UseServiceBus(serviceBusConfiguration);
  • 我找到了答案:你可以做到。如果创建ServiceBusScaleoutConfiguration 和 GlobalHost.DependencyResolver.UseServiceBus(serviceBusConfiguration);您可以像在 webrole 中一样使用 IHubContext,它可以在工作角色中工作。
  • 我了解到您正在从辅助角色向背板发送信号器消息,而 Web 角色将消息广播给连接的客户端?你能详细说明你是怎么做到的吗?您是否需要在工作角色中可以访问中心类本身?你会做一些特别的事情来设置吗? (最好如果你能回答你自己的问题)。谢谢

标签: windows azure signalr azure-web-roles azure-worker-roles


【解决方案1】:

您可以让您的 Azure 辅助角色通过 Ajax 或 SignalR .NET client 向您的 Web 角色发出请求。然后,您可以让您的 Web 角色代理从您的工作角色发送到您的“正常”(可能是 JS)客户端的消息。您可以使用组或特殊工作角色中心来区分工作角色客户端和普通客户端。

如果您想将来自工作角色的消息作为 Ajax 响应的一部分进行代理,您可能需要考虑使用 GetHubContext,这样您就可以使用 broadcast to clients from outside a hub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2014-08-29
    • 2015-07-07
    • 2011-09-17
    • 2012-07-27
    • 2013-01-06
    相关资源
    最近更新 更多