2012-08-09 28 views
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); 
    } 
} 

}

我有signalr包括:

<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()方法首先不會觸發。

回答

1

我發現了什麼是錯的......只要我說像這樣的方法:

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

Dashboard.someMethod = function(message){ 
} 

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

}); 
}); 

Connect()功能開始射擊,不知道你需要一個客戶端功能在那裏以激活連接。

+1

是的,你至少需要一個訂閱。這是「優化」,所以你最終不會訂閱你不需要的集線器。 – davidfowl 2012-08-10 03:15:03

+0

我也一直在爲這個問題煩惱。也許這可以添加到wiki? – Lodewijk 2012-08-28 10:04:59

相關問題