我尝试使用 SQL Server 和 SignalR 设置以下配置
http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server
一切似乎都设置正确,如果我分析 SQL 服务器,我可以看到 SignalR 调用数据库,但是当我调用集线器向所有连接的客户端发送消息时,消息永远不会发送到连接的浏览器。
知道可能是什么问题吗?
我尝试使用 SQL Server 和 SignalR 设置以下配置
http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server
一切似乎都设置正确,如果我分析 SQL 服务器,我可以看到 SignalR 调用数据库,但是当我调用集线器向所有连接的客户端发送消息时,消息永远不会发送到连接的浏览器。
知道可能是什么问题吗?
谢谢@smnbss,您在问题中的评论挽救了我的生命。只是为了让以后遇到同样问题的每个人都清楚,这里是错误的实现:我只得到了一次上下文,比如:
public class SyncService : ISyncService
{
private IHubContext StatusChangeHub { get; set; }
public GatewaySyncService()
{
StatusChangeHub = GlobalHost.ConnectionManager.GetHubContext<Hub>();
}
public void SyncStatusChange(Status newStatus)
{
StatusChangeHub.Clients.All.onStatusChange(newStatus);
}
}
但不知何故,这只能在不使用背板的情况下工作。以及正确的实现:每次要发送消息时都需要获取上下文:
public class SyncService : ISyncService
{
public void SyncStatusChange(Status newStatus)
{
var context = GlobalHost.ConnectionManager.GetHubContext<Hub>();
context.Clients.All.onStatusChange(newStatus);
}
}