Signalr 连接到多个 Web 应用程序
Signalr connecting to multiple Web applications
我们计划将 SignalR 添加到多个不同的网络应用程序中。这些应用程序针对订单的不同方面。当订单出现问题时,所有在所有 Web 应用程序中处理订单的用户都应该得到通知。
订单更改可作为服务总线上的消息提供。
我们可以在所有网络应用程序中实现以下逻辑:
- 订阅主题(每个网络应用一个订阅)
- OnMessage -> 将 orderId 发送到集线器
- Hub 会通知处理 orderId 的客户
问题是:我们能否在单独的应用程序中实现所有这些通用功能,并且所有网络应用程序都将引用相同的信号器脚本?
所有应用程序都在同一个域中,如果不必在每个应用程序中都实现 signalr,这会给我们带来很多好处。
好主意,还是我错过了一些重要的东西?
编辑: 换句话说:我有没有 SignalR 的 WebAppA、WebAppB 和 WebAppC。我问是否有可能创建一个 WebappD 与 WebApp A、B、C
中的客户端对话
第二种方案很好。它会将信号器负载(尤其是内存)从您的主要网络应用程序移动到 WebAppD(信号器网络应用程序)。而且您所有的主要网络应用程序都将不依赖于 signalr。
缺点:您在 WebAppD 上没有任何身份验证。因为客户端在其他 WebApps 上进行了身份验证。您应该让 WebAppD 知道 orderId。这就是为什么您应该从客户端 (Javascript).
向服务器 (WebAppD) 发送消息
由于启用了跨域设置,任何人都可以向服务器发送消息。即使它们不需要连接 WebAppA、WebAppB 或 WebAppC。即使您解决了这个问题(虚拟路径等),有人已连接但未在 WebAppA、WebAppB、WebAppC 上进行身份验证可以发送消息。因为 WebAppD 只是收到消息,它不知道此客户端是否已通过身份验证,所以它会将此消息提供给所有其他客户端。简而言之:有人可以向其他客户端发送虚假消息。
因此,您应该在您的网络应用程序和信号器网络应用程序之间共享您的身份验证,例如 this(或其他一些逻辑)。
除此之外我看不出有什么缺点。
我们计划将 SignalR 添加到多个不同的网络应用程序中。这些应用程序针对订单的不同方面。当订单出现问题时,所有在所有 Web 应用程序中处理订单的用户都应该得到通知。
订单更改可作为服务总线上的消息提供。
我们可以在所有网络应用程序中实现以下逻辑:
- 订阅主题(每个网络应用一个订阅)
- OnMessage -> 将 orderId 发送到集线器
- Hub 会通知处理 orderId 的客户
问题是:我们能否在单独的应用程序中实现所有这些通用功能,并且所有网络应用程序都将引用相同的信号器脚本?
所有应用程序都在同一个域中,如果不必在每个应用程序中都实现 signalr,这会给我们带来很多好处。
好主意,还是我错过了一些重要的东西?
编辑: 换句话说:我有没有 SignalR 的 WebAppA、WebAppB 和 WebAppC。我问是否有可能创建一个 WebappD 与 WebApp A、B、C
中的客户端对话第二种方案很好。它会将信号器负载(尤其是内存)从您的主要网络应用程序移动到 WebAppD(信号器网络应用程序)。而且您所有的主要网络应用程序都将不依赖于 signalr。
缺点:您在 WebAppD 上没有任何身份验证。因为客户端在其他 WebApps 上进行了身份验证。您应该让 WebAppD 知道 orderId。这就是为什么您应该从客户端 (Javascript).
向服务器 (WebAppD) 发送消息由于启用了跨域设置,任何人都可以向服务器发送消息。即使它们不需要连接 WebAppA、WebAppB 或 WebAppC。即使您解决了这个问题(虚拟路径等),有人已连接但未在 WebAppA、WebAppB、WebAppC 上进行身份验证可以发送消息。因为 WebAppD 只是收到消息,它不知道此客户端是否已通过身份验证,所以它会将此消息提供给所有其他客户端。简而言之:有人可以向其他客户端发送虚假消息。
因此,您应该在您的网络应用程序和信号器网络应用程序之间共享您的身份验证,例如 this(或其他一些逻辑)。
除此之外我看不出有什么缺点。