1

次のハブクラスがあります。

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()、検索が呼び出されますが、Connect()そもそもメソッドが起動することはありません。

4

1 に答える 1

1

私は何が間違っているかを見つけました...次のようなメソッドを追加するとすぐに:

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

Dashboard.someMethod = function(message){
}

$.connection.hub.start(function () {
    Dashboard.getUserInfo();

});
});

私のConnect()機能が起動し始めましたが、接続をアクティブにするためにそこにクライアント機能が必要であることを知りませんでした。

于 2012-08-09T22:09:48.737 に答える