1

我正处于在我的项目中使用 SignalR 的阶段,我不明白何时使用自托管选项以及何时不应该使用。例如,如果我愿意在服务器场中托管我的 Web 应用程序,

  • 将有单独的托管服务器
  • 每个 IIS 服务器中的单独 SignalR 集线器

如果我们想向每个客户端广播消息,这在 SignalR 中是如何工作的

4

1 回答 1

1

SignalR 在多个实例中运行的想法是连接在实例 A 上的客户端无法从连接到实例 B 的客户端获取消息。

SignalR 横向扩展文档

但是,当您向外扩展时,客户端可以路由到不同的服务器。连接到一个服务器的客户端将不会接收从另一台服务器发送的消息。

对此的解决方案是使用backplane- 每次服务器收到消息时,它都会将其转发给所有其他服务器。您可以使用Azure 服务总线RedisSQL来执行此操作。

在我看来,当您不想运行完整的 IIS(因为您有一些不需要所有 IIS 繁重的轻量级操作)或者您根本不想要 Web 服务器时,您可以使用自主机选项(例如,您想将实时功能添加到已经存在的表单应用程序或任何其他进程中)。

请务必阅读自托管 SignalR 的文档,并确定您是否真的需要自托管 SignalR。

如果您在 IIS 下开发 Web 应用程序,我看不出有任何理由要自托管 SignalR。

希望这可以帮助。祝你好运!

于 2015-08-28T10:17:17.833 回答