首页 > 解决方案 > 使用 asp net core SignalR 应用程序进行水平缩放

问题描述

我的 docker swarm 配置中有一个带有 Redis 背板的 asp net core signalR 应用程序。

我需要获得与我的应用程序的所有连接

只有 1 个副本,我可以创建一个这样的列表:

public static readonly List<string> Connected = new();

我可以在连接/断开连接时从该列表中添加/删除用户;这种方法工作正常。但是,当我通过添加实例来扩大规模时,这将停止工作。

问题:我如何在水平缩放时检查用户是否已连接?

我阅读了这个信号器指南,我喜欢通过数据库实现,但我无法理解如何在服务器重新启动时验证连接。

例如:
2 台服务器,1 台 Redis,1 台带连接的数据库
一切正常,但如果 1 台服务器崩溃,它不会OnDisconnectedAsync 在集线器中触发,因此我将无法从数据库中删除连接。

标签: c#asp.net-core-signalr

解决方案


推荐阅读