公共任务连接(),当用户连接到集线器类不点火
问题描述:
我有以下毂类:公共任务连接(),当用户连接到集线器类不点火
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()
方法首先不会触发。
答
我发现了什么是错的......只要我说像这样的方法:
$(function() {
//Create the proxy
var Dashboard = $.connection.dashboard;
Dashboard.someMethod = function(message){
}
$.connection.hub.start(function() {
Dashboard.getUserInfo();
});
});
我Connect()
功能开始射击,不知道你需要一个客户端功能在那里以激活连接。
是的,你至少需要一个订阅。这是“优化”,所以你最终不会订阅你不需要的集线器。 – davidfowl 2012-08-10 03:15:03
我也一直在为这个问题烦恼。也许这可以添加到wiki? – Lodewijk 2012-08-28 10:04:59