我使用 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/