2

我尝试使用 SQL Server 和 SignalR 设置以下配置

http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server

一切似乎都设置正确,如果我分析 SQL 服务器,我可以看到 SignalR 调用数据库,但是当我调用集线器向所有连接的客户端发送消息时,消息永远不会发送到连接的浏览器。

知道可能是什么问题吗?

4

1 回答 1

3

谢谢@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);      
    }
}
于 2014-12-03T12:58:08.963 回答