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

时间:2014-06-30 05:54:44

标签: c# sql-server signalr scalability

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

我尝试使用SQL Server scaleout运行一个简单的控制台应用程序并发布如下消息:

        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”,那么您应该发送完全相同类型的对象。

1 个答案:

答案 0 :(得分:2)

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

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