问题标签 [signalr-backplane]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
658 浏览

asp.net - 通过 Azure 服务总线传递的 SignalR 消息不会传播到 SignalR Web 客户端

我想将 SignalR 消息直接从我的 Azure WebJob 发送到在我的 Web 服务器上运行的浏览器客户端,因此我将 SignalR 配置为使用 Azure 服务总线作为 WebJob 和我的服务器上的背板。从 WebJob 发送的消息将进入服务总线主题队列,并被 Web 服务器接收,但不会发送到连接的 SignalR Web 客户端。我认为这会自动发生,我是否必须以某种方式从网络服务器订阅我的 WebJob SignalR 消息并手动将它们传播到浏览器客户端?

我会粘贴一些代码,但我不确定什么是相关的,因为我没有收到任何错误。我可以通过服务总线跟踪从 WebJob 到我的 Web 服务器的消息,但没有任何东西到达每个 Web 服务器上运行的 SignalR 浏览器客户端。

重点;

  • 每个 Hub 实例都使用相同的 Hub 名称注册
  • WebJob 和 Web 服务器都使用相同的服务总线背板连接字符串
  • 我可以看到消息被发送到正确的主题,并且正在阅读正确的订阅

来自 WebJob 的跟踪信息:

SignalR.ServiceBusMessageBus 信息:0:订阅服务总线中的 5 个主题... SignalR.ServiceBusMessageBus 信息:0:新主题客户端 SIGNALR_TOPIC_SignalREvents_0 的创建成功完成。SignalR.ServiceBusMessageBus 信息:0:在服务总线中为主题 SIGNALR_TOPIC_SignalREvents_0 创建新订阅 2ea68ce5-58fe-4218-8768-e03675be8e74 已成功完成。SignalR.ServiceBusMessageBus 信息:0:为服务总线中的订阅实体路径 SIGNALR_TOPIC_SignalREvents_0/Subscriptions/2ea68ce5-58fe-4218-8768-e03675be8e74 创建消息接收成功完成。SignalR.ScaleoutMessageBus 信息:0:Stream(0) - 将状态从初始更改为打开 (x5) SignalR.ServiceBusMessageBus 信息:0:订阅服务总线中的 5 个主题主题服务已成功完成。SignalR.ServiceBusMessageBus 详细:0:通过服务总线发送 68 个字节:{"H":"auctionHub","M":"Init","A":[{"Price":569.72,"Symbol":"GOOG" }]} SignalR.ServiceBusMessageBus 详细:0:通过服务总线发送 68 个字节:{"H":"auctionHub","M":"Init","A":[{"Price":577.38,"Symbol": "APPL"}]} SignalR.ServiceBusMessageBus 详细:0:通过服务总线接收 68 个字节:{"H":"auctionHub","M":"Init","A":[{"Price":569.72," Symbol":"GOOG"}]} SignalR.ScaleoutMessageBus 信息:0 : OnReceived(4, 65, 1)

来自网络服务器的跟踪

SignalR.ServiceBusMessageBus 信息:0:订阅服务总线中的 5 个主题... SignalR.ServiceBusMessageBus 信息:0:新主题客户端 SIGNALR_TOPIC_SignalREvents_0 的创建成功完成。SignalR.ServiceBusMessageBus 信息:0:在服务总线中为主题 SIGNALR_TOPIC_SignalREvents_0 创建新订阅 e6afd744-7724-4ab5-8fd9-2717a62caf61 已成功完成。SignalR.ServiceBusMessageBus 信息:0:为服务总线中的订阅实体路径 SIGNALR_TOPIC_SignalREvents_0/Subscriptions/e6afd744-7724-4ab5-8fd9-2717a62caf61 创建消息接收成功完成。SignalR.ScaleoutMessageBus 信息:0:Stream(0) - 将状态从初始更改为打开 SignalR.ServiceBusMessageBus 信息:0:新主题客户端 SIGNALR_TOPIC_SignalREvents_1 的创建成功完成。SignalR.ServiceBusMessageBus 信息:0:为服务总线中的主题 SIGNALR_TOPIC_SignalREvents_1 创建新订阅 2c155757-123f-44ba-ace7-96a6b390234e 已成功完成。SignalR.ServiceBusMessageBus 信息:0:为服务总线中的订阅实体路径 SIGNALR_TOPIC_SignalREvents_1/Subscriptions/2c155757-123f-44ba-ace7-96a6b390234e 创建消息接收成功完成。SignalR.ScaleoutMessageBus 信息:0:Stream(1) - 将状态从初始更改为打开 SignalR.ServiceBusMessageBus 信息:0:新主题客户端 SIGNALR_TOPIC_SignalREvents_2 的创建成功完成。SignalR.Transports.TransportHeartBeat 信息:0:

SignalR.ServiceBusMessageBus 详细:0:通过服务总线接收 37 个字节:{"H":"auctionHub","M":"Init","A":[1]} SignalR.ScaleoutMessageBus 信息:0:OnReceived(4, 221, 1)

SignalR 服务总线配置代码(在 WebJob 和 Web 服务器上相同)

如果我还有头发,我会把它撕掉。我已经对此进行了广泛的搜索,但找不到任何有用的东西。任何指针将不胜感激。

编辑>>

OnDisconnected并且OnReconnected未受影响。

我正在使用 SimpleInjector 根据需要提供 SignalR 上下文,这个实现会有什么效果吗?

0 投票
1 回答
1250 浏览

signalr - SIGNALR 背板 - 当您向群组发送消息时发生了什么

当您将 SignalR 配置为使用 SQL 背板并发送到组时,SignalR 是在背板中为组创建一条消息还是为组中的每个客户端 ID 创建一条消息。

我需要 SignalR 的两个实例,但由于客户端在实例之间有不同的 connectionId,我需要将消息发送到可能是组的唯一标识符。

任何人都可以回答这个吗?谢谢

0 投票
1 回答
325 浏览

c# - 使用粘性会话时是否需要 SignalR 背板?

我们为使用粘性会话的应用程序提供了一个多服务器、负载平衡的环境。我们正在考虑添加一个 SignalR 实现来向各个客户端发送更新。我玩过 SignalR 一点,所以我知道背板。我想知道,由于我们使用的是粘性会话,如果我们不需要实现背板,因为单个服务器正在处理身份验证后的用户请求。

0 投票
1 回答
795 浏览

redis - SignalR Redis 背板组同步

SignalR 背板是否像在 Groups.Add 中一样跨服务器同步连接的组?我知道它会发布消息,但不清楚组是否也同步。基本上我想知道网络场中的服务器是否出现故障,其他服务器是否配置了相同的组?

如果是这样,是否有任何文件支持这一点?

谢谢,

0 投票
2 回答
1796 浏览

c# - 在 Azure Service Fabric 服务中设置 SignalR 和服务总线

我正在将现有的 Cloud Service WorkerRole 作为无状态服务移植到 Service Fabric。原始云服务使用 SignalR 和服务总线(作为 SignalR 背板)向任何正在监听的客户端发送通知。有一个 Startup 类可以进行一些设置:

在 WorkerRole 的 OnStart() 方法中,我使用以下命令启动 OWIN:

这是如何为 Service Fabric 中的无状态服务完成的(即连接到 SignalR 服务总线背板)?

0 投票
2 回答
1354 浏览

.net - 带有 SignalR 背板的 Redis 集群

我们的应用程序使用 SignalR。我们需要支持负载均衡部署以实现高可用性。我们还在我们的应用程序中使用集群 Redis 进行缓存。

我们正在考虑使用与 SignalR 背板相同的 Redis 集群来横向扩展。

但是 GlobalHost.DependencyResolver.UseRedis() 不支持将多个服务器作为参数传递。

如果可能,请指导我们如何实现相同的目标?

0 投票
0 回答
376 浏览

signalr - Signalr 向特定客户端和客户端组发送消息

我想使用信号器向特定用户或用户组发送消息。在此之前,我想将用户映射到连接 ID。我正在使用 deviceUUId 进行用户登录。我无法在 GetuserID 方法中传递 deviceUUID。我从客户端获取 deviceUUID 并点击 api。我可以在 MyOwnIdProvider 中使用相同的 deviceUUID 吗?如何映射到用户?

0 投票
1 回答
894 浏览

signalr - 如何在不使用现有背板选项的情况下实现 SignalR 横向扩展

我正在使用在负载均衡器后面的多个服务器中托管的 SignalR。我将连接 ID 和用户 ID 存储在 sql server 的自定义数据库表中。每次,我都需要向选定的用户发送通知。它在单服务器环境中运行良好。如何在不使用现有背板选项的情况下使用自定义数据库表扩展 SignalR 实现?

0 投票
1 回答
1404 浏览

signalr - 使用 sql server 的 Signalr 横向扩展

我们需要使用 Signalr 实现推送通知。我们有两个 Web 服务器(即集群中配置的生产服务器和备份服务器)。仅当生产服务器关闭时,客户端才会连接到备份服务器。我们有同步的生产数据库和备份数据库。生产网络服务器与生产数据库相连,备份网络服务器与备份数据库相连。如何使用 sql server 横向扩展此场景。

0 投票
1 回答
687 浏览

azure - SignalR 和高可用性——如果服务器离开,集线器客户端可以恢复吗?

给定具有高可用性 WebAPI 的 Azure 托管 Web 角色(例如 99.95%,根据https://azure.microsoft.com/en-us/documentation/articles/resiliency-disaster-recovery-high-availability-azure-applications / ) 具有约 1000 个客户端的应用程序。客户端是一个 ReactJS 应用程序。WebAPI 应用程序将推送针对特定客户端组定制的通知(例如,并非所有客户端用户都对所有事件感兴趣,但>1 个用户可能对同一事件感兴趣)。

通过阅读 SignalR 文档并使用一些示例,感觉 SignalR 组将帮助我们将正确的事件流向正确的 ReactJS 应用程序实例。此外,我们将使用 SignalR 横向扩展提供程序之一,以确保我们从正确的 WebAPI 服务器实例推送到客户端。

问题:当“正确的 WebAPI”实例不可用时,应用程序如何恢复?

我可以想象一个服务器端主动/被动方案在确保每个集线器客户端至少有一个“服务器”方面具有一定的复杂性......但是服务器可以(以主动方式)连接到集线器客户端吗?我们会让每个 Hub 客户端(在注册组时)连接到 >1 个服务器吗?

应用程序如何使用 SignalR 解决此问题?