我们什么时候应该使用 SignalR 自托管,什么时候不应该?

When we should use SignalR self hosted and when we should not?

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

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

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

(SignalR scaleout documentation)

However, when you scale out, clients can get routed to different servers. A client that is connected to one server will not receive messages sent from another server.

这个问题的解决方案是使用 backplane - 每次服务器收到消息时,它都会将其转发给所有其他服务器。您可以使用 Azure Service Bus, Redis or SQL.

执行此操作

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

请务必阅读 documentation for self-hosting SignalR 并决定您是否真的需要自行托管 SignalR。

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

希望这对您有所帮助。祝你好运!