问题标签 [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 投票
2 回答
450 浏览

signalr - signalR 背板是否也共享连接?

signalR 背板是否也共享连接信息?

我的意思是在“longpolling”的情况下,连接请求会发送到一个服务器,而启动服务器会发送到另一台服务器,然后它会给出这个错误“ConnectionId 的格式不正确”。

我相信这个错误即将到来,因为这个请求所针对的实例没有关于这个连接 ID 的任何信息。我正在使用 SQL 服务器背板,但仍然面临这个问题。

我们不应该在生产环境中使用粘性会话

0 投票
0 回答
377 浏览

c# - 具有不同配置的多个信号集线器

我的项目中有多个集线器。我想为每个集线器使用不同的 HubConfiguration。这是因为其中一个集线器连接到背板,而另一个没有。

基本上,对于其中一个集线器,我有几个工作进程在其他环境中运行,向它发布数据。

另一个集线器基本上只是您的标准集线器,没有连接背板。

现在,我知道您可以拥有多个集线器配置,如此处所回答

使用这种方法,我可以将背板连接到其中一种配置,而另一种则不这样做。但是,我似乎无法指定哪些集线器应可用于每种不同的配置。

我该怎么做呢?

更新:

基本上,我有两种类型的应用程序:一个托管两个不同集线器(HubA、HubB)的标准 ASP.NET 应用程序和一个将数据发布到 HubA 的“数据收集器”应用程序。问题归结为我不知道如何在我的 ASP.NET 应用程序中将背板附加到仅 HubA 上。

我添加了一张我想要实现的图表:

一个集线器使用背板,而另一个不使用

0 投票
1 回答
208 浏览

asp.net - 负载平衡的 SignalR 在启动时失败。Redis 背板会修复吗?

在负载平衡环境中运行时,我遇到 SignalR 无法完成其连接周期的问题。我正在探索 Redis 作为解决此问题的一种方法,但想要快速检查一下我没有忽略一些明显的东西。

症状——</p>

查看网络流量,我可以看到分别通过 XHR 和 websockets 发出的协商连接请求,这是我所期望的。但是,开始请求失败并 在订阅实时订阅时发生错误。错误:无效的开始响应:''。停止连接。

以及({"source":null,"context":{"readyState":4, "responseText":"","status":200, "statusText":"OK"}})的错误消息

正如预期的那样,当在不同的服务器上发出连接和启动请求时,就会发生这种情况。此外,100% 的时间在非负载平衡环境中工作。

这是 Redis 背板可以解决的问题吗?这似乎是有道理的,但我看到的添加背板的大部分理性都是围绕集线器消息丢失,而不是无法建立连接,所以我想知道我是否忽略了一些基本的东西。

谢谢!

0 投票
1 回答
354 浏览

c# - SignalR 横向扩展客户端到服务器广播

使用 SignalR 横向扩展,我如何将消息从客户端广播到连接到我的背板的所有服务器?我认为它应该默认工作,但是只有一个服务器的集线器正在接收消息。

设置:我在负载均衡器后面有 4 个虚拟机,我正在使用带有 Redis 背板的 SignalR。我有以下集线器:

在客户端,我使用以下方法调用此方法:

我已经在消息总线上启用了跟踪,并且在所有服务器上都收到了消息:

但是,仅在一台服务器上调用 Hub 方法。如何让这个调用在所有服务器上执行 StartProcessing 方法?

0 投票
1 回答
517 浏览

asp.net - SignalR SQL 背板未在预生产中启动

3天后,这个问题让我头疼。

SignalR 没有在我的包含单个 SQL 服务器 + 负载平衡 Web 服务器的预生产环境中创建其背板 SQL 架构和表。

我已经检查过了

  • WebSockets 安装在 IIS 中
  • 数据库访问允许创建表和模式
  • .Net 4.5 已安装并正在使用
  • 已安装推荐的更新
  • 此处列出的步骤已完成(除了从 Visual Studio 进行部署 - 我使用 MSBUILD 打包然后使用 WebDeploy)

我已经支持 SignalR 跟踪。只有我的跟踪条目被写入 - SignalR 没有任何内容。

如果我在发布模式下构建,一切都在我的开发环境中正常工作(包括跟踪)。

这是我的跟踪增强启动过程

任何帮助都会很棒。干杯。

0 投票
1 回答
142 浏览

signalr - SignalR Scaleout 获取消息

我有一个使用 SignalR 的聊天功能,并且有一个 sql server 背板。当人们聊天时,两台服务器上都会显示消息。但是,如果您刷新页面,显然聊天记录已经消失了。

因此,当人们说某事时,我会将其缓存在内存中的字典中。问题是,该消息不在另一台服务器的内存中,因此如果有人刷新并且负载平衡,则该消息不会出现。

无论如何要订阅获取服务器和背板之间发生的事件,以便我可以使两个缓存保持同步?

谢谢!

0 投票
1 回答
773 浏览

sql-server - 我可以在现有的实体代码优先数据库上将 SignalR 与 SQL Server Backplace 一起使用吗?

根据Scaleout with SQL Server,您可以使用 SignalR.SqlServer 在负载平衡设置上保持 SignalR 同步。我有一个现有的 MVC 5 网站,它有自己的数据库,使用实体代码优先创建。该文章似乎使用启用了服务代理的专用数据库,并表示不要修改数据库。

那么我需要为此建立一个单独的数据库吗?我知道如果数据库架构不匹配,Entity 可能会很挑剔,我担心如果我尝试将 SignalR Sql Server 包与现有数据库一起使用,它创建的表会导致上下文更改错误。

也有人可以向我提供有关使用 Microsoft.AspNet.SignalR.SqlServer 包的更多信息。我链接的文章没有提供大量细节,我不知道是否需要更改我的中心和组中的任何内容,或者是否全部自动处理。

0 投票
1 回答
367 浏览

redis - 背板与粘性负载均衡器

我正在开发 SignalR 应用程序。我的应用程序的多个实例将在负载均衡器后面的不同服务器上运行。我阅读了背板,发现它主要用于服务器故障并处理多个服务器之间的请求跳跃。(可能还有其他好处)。

请考虑以下情况并建议我是否仍需要背板。

我正在使用粘性负载平衡(即来自客户端的所有后续请求都发送到同一台服务器)?所以在好的情况下没有请求跳跃的机会。

我如何处理服务器宕机场景 - 当服务器宕机时。客户端尝试重新连接并收到“404-not found”错误。此时客户端启动新连接并且它可以工作。

0 投票
0 回答
232 浏览

signalr - 如何在控制台应用程序或辅助角色中将 SignalR 与 Redis 横向扩展后端一起使用?

我有一个 Web 应用程序,它使用 SignalR 和 Redis 横向扩展(据称)和集线器,效果很好。现在我需要一个工作角色才能向所有连接的客户端发送消息,但我不知道该怎么做。我还有一个控制台应用程序用作测试应用程序,它立即运行工作人员将定期运行的方法。

在工作程序或控制台应用程序中托管 Web 服务器似乎很奇怪,但这主要是我迄今为止发现的。与网络应用程序交谈似乎也很奇怪。不应该只是向 Redis 发布一条消息,然后所有订阅者都会收到它吗?

这是我正在使用的代码。我从网络应用程序中复制了UseRedis电话和handleExecutedAction几乎一字不差的内容。它不会抛出任何东西,但消息不会到达 Web 客户端:

找到此页面后,我使用了此方法(上下文) 。我知道客户端正在工作,因为其他消息来自网络应用程序,而控制台应用程序没有任何消息......

0 投票
1 回答
761 浏览

c# - 使用 Azure 进行 SignalR 横向扩展,用于聊天场景

对于聊天应用程序,我使用带有 SignalR 的 Azure 架构,网络角色充当 SignalR 服务器(消息不是广播类型,而是针对特定用户/客户端)。

我想与 Web 角色一起扩展 SignalR 服务器,以处理繁重的用户负载。虽然,SignalR 文档不建议使用使用背板(Redis、服务总线)的预烘焙 SignalR 横向扩展方法,因为当连接更多用户时消息数量增加(或在用户事件驱动的场景中)。它明确指出:“客户端到客户端(例如,聊天):在这种情况下,如果消息数量与客户端数量成比例,那么背板可能会成为瓶颈;也就是说,如果消息的速率随着更多客户加入。”

问题: 有没有人知道针对这种高频情况的任何自定义横向扩展解决方案,它不会将消息推送到每个服务器实例或其他横向扩展解决方案?

已经在 SignalR 文档和相关视频中到处查看,但找不到任何东西,除了一个词“过滤总线”,没有解释它是什么以及应该如何使用它。