2014-04-01 232 views
1

这里是我的HUB类:SignalR客户端未连接

public class ZaaloverzichtHub : Hub 
{ 
    IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ZaaloverzichtHub>(); 

    private static readonly Lazy<ZaaloverzichtHub> instance = new Lazy<ZaaloverzichtHub>(() => new ZaaloverzichtHub()); 

    public static ZaaloverzichtHub Instance { get { return instance.Value; } } 



    public void Send()//PartialViewResult zaaloverzicht) 
    { 
     // Call the broadcastMessage method to update clients. 
     context.Clients.All.broadcastMessage("test"); 
    } 


} 

下面是我认为的JavaScript:

$(function() { 
    var connection = $.connection.ZaaloverzichtHub; 

    connection.client.broadcastMessage = function (zaaloverzicht) { 
     window.alert(zaaloverzicht); 
    } 
    $.connection.hub.start(); 
}); 

我打电话从我的控制器send()方法

var hub = ZaaloverzichtHub.Instance; 
hub.Send(); 

集线器中的Send()方法正在被调用,但是客户端没有发生任何事情。我知道客户端没有被连接到集线器,因为当我做的方法是这样的:

public override System.Threading.Tasks.Task OnConnected() 
    { 
     return base.OnConnected(); 
    } 

放置一个断点,断点从不打。

+0

嗯,我懂了工作使用属性明确命名。原来我引用了一个旧的jquery库,它并未包含在我的项目中。 –

回答

2

为SignalR的约定是使用客户端上的一个小写的命名方案,除非在C#

var connection = $.connection.zaaloverzichtHub;//note the case change on Z to z 
+0

谢谢。我其实知道这个惯例,但由于某种原因错过了这一点。但是,这并不能解决问题。 –