用SQL Server扩展SignalR——是否可以添加来自外部服务的消息?

本文关键字:外部 服务 消息 添加 Server SQL 扩展 SignalR 是否 | 更新日期: 2023-09-27 18:10:57

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

我试着用SQL server scale - out运行一个简单的控制台应用程序,并发布这样的消息:

        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建议,它工作正常,你必须注意,如果你激活一个客户端函数,你发送的参数必须匹配,即如果对象是"命名空间"。

用SQL Server扩展SignalR——是否可以添加来自外部服务的消息?

您应该尝试使用GlobalHost.ConnectionManager.GetHubContext而不是直接发布到总线。你的代码看起来像这样:

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