公共任务连接()在用户连接到中心类时未触发

public Task Connect() not firing when user connects to hub class

本文关键字:连接 用户 任务      更新时间:2023-09-26

>我有以下集线器类:

public class Dashboard : Hub, IDisconnect, IConnected
    {
        //Initialize Repoisotries 
        private IProfileRepository profileRepository;
        private ISiteDataRepository siteDataRepository;
        private readonly IHubContext matchContext = GlobalHost.ConnectionManager.GetHubContext<MatchMaker>();
    //Constructor Injection for profile repository and site data repository
    public Dashboard(IProfileRepository repo, ISiteDataRepository siteRepo)
    {            
        profileRepository = repo;
        siteDataRepository = siteRepo;            
    }
    public Task Disconnect()
    {
        return null;
    }
    public Task Reconnect(IEnumerable<string> connections)
    {
        return null;
    }
    public Task Connect()
    {
        Debug.WriteLine(MatchMaker.onlineUsers.Count);
        return null;
    }
    public void GetUserInfo()
    {
        Debug.WriteLine(MatchMaker.onlineUsers.Count);
    }
}

}

我有信号器包括:

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>

我像这样访问它:

$(function () {
    //Create the proxy
    var Dashboard = $.connection.dashboard;
    $.connection.hub.start(function () {
        Dashboard.getUserInfo();
    });
});

当我调用Dashboard.getUserInfo()时,该方法被称为 find,但 Connect() 方法从一开始就不会触发。

我发现了问题所在... 一旦我添加了这样的方法:

$(function () {
//Create the proxy
var Dashboard = $.connection.dashboard;
Dashboard.someMethod = function(message){
}
$.connection.hub.start(function () {
    Dashboard.getUserInfo();
});
});

我的Connect()函数开始触发,不知道您需要客户端函数来激活连接。