c# - 使用 SQL Server 横向扩展 SignalR - 是否可以从外部服务添加消息?

标签 c# sql-server signalr scalability

我使用 SQL Server 作为扩展 SignalR 的背板。 在我的场景中,有一些服务在其他服务器上运行,我需要将它们的工作状态集成到我的 SignalR 中心中。

我尝试使用 SQL Server 横向扩展运行一个简单的控制台应用程序作为测试,并发布如下消息:

        var config = new SqlScaleoutConfiguration(connectionString);
        GlobalHost.DependencyResolver.UseSqlServer(connectionString);

        var messageBus = new SqlMessageBus(GlobalHost.DependencyResolver, config);
        var message = new Message("TransactionHub", "RegisterClient","{userId:1}");
        messageBus.Publish(message);

我可以像这样使用 SQLScaleout 吗?

如果没有,还有其他方法可以完成我想做的事情吗?

编辑:

我已经按照halter73的建议做了,它工作正常,你必须注意,如果你激活客户端功能,你发送的参数必须匹配,即如果对象是“Namespace.ClassName”那么你应该发送完全相同类型的对象。

最佳答案

您应该尝试使用GlobalHost.ConnectionManager.GetHubContext而不是直接发布到总线。您的代码将如下所示:

var context = GlobalHost.ConnectionManager.GetHubContext<TransactionHub>();
context.Clients.All.registerClient(new { userId = 1 });

关于c# - 使用 SQL Server 横向扩展 SignalR - 是否可以从外部服务添加消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24483681/

相关文章:

c# - 如何从 C# 将欧洲格式的日期和时间插入 SQL Server?

c# - 下料问题

c# - 调用存储过程时如何在表值参数中包含 RowVerson 列?

sql - 将字符串传递到 SQL WHERE IN

.net-core - WebRTC 和 Asp.Net Core

c# - 使用 Winforms 应用程序分发 Access 数据库

java - 从 C# 编辑 Java 应用程序的内存

sql-server - GO 命令在 SQL 脚本中的作用是什么?

asp.net-core - 将 SignalR hub 与 Redis 结合使用时如何跨负载均衡器服务器跨越 ConcurrentDictionary

signalr - 手动启动 Owin