signalR 背板是不是也共享连接?

Posted

技术标签:

【中文标题】signalR 背板是不是也共享连接?【英文标题】:Does signalR backplane shares connections also?signalR 背板是否也共享连接? 【发布时间】:2015-06-01 12:05:34 【问题描述】:

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

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

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

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

【问题讨论】:

这是***.com/questions/21855744/…的副本 在另一个线程中,他们正在谈论拥有相同的机器密钥。但在我的情况下,我的 signalR 站点的两个实例都在一个负载均衡器站点下的同一台服务器上。所以他们已经在共享同一个 machine.config。我仍然面临这个问题。有什么想法吗? 连接请求转到一台服务器,启动服务器转到另一台服务器你能更好地解释\修复这部分吗?如果您使用 SSE 传输遇到相同的错误,您可以尝试一下吗? 【参考方案1】:

不,SignalR 不会通过背板共享有关客户端连接\断开连接的任何信息(例如 - server2 不会收到有关 server1 上新客户端连接的通知)

所以问题出在其他地方......

【讨论】:

如果我们以某种方式在两台服务器上共享连接信息,那么客户端是否有可能与 Server1 连接/协商并在 Server2 上轮询,但仍然从 Server2 获取消息? 使用背板时,来自服务器的消息broadcasted 被传递到每个客户端,而不管它连接到哪个服务器。这就是背板的目的。你不需要做任何事情来让它工作。这并不意味着每个服务器都知道(或需要知道)连接到每个服务器的每个客户端......【参考方案2】:

我遇到了问题。仅其机器密钥问题。 我必须在我的应用程序的 web.config 中显式添加机器密钥。 然后它能够​​取消保护由我的应用程序的另一个实例生成的令牌。 现在它工作正常。

【讨论】:

以上是关于signalR 背板是不是也共享连接?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Framework 4.6.2 SignalR 和 Redis 背板未连接

SignalR OnConnected 与多台服务器和 Redis 背板

网桥介绍

SignalR 通过 K8S Ingress 连接

在本地 IIS 下运行是不是会限制 Signalr 连接的数量

基于SignalR的服务端和客户端通讯处理