2012-12-14 32 views
2

我试图使用signalR集线器实现推送通知。我有一个示例代码,当我运行时,出现错误,说 JavaScript运行时错误:'Rx'未定义使用signalR集线器时Rx未定义错误

此错误出现在dynamic signalr/hubs文件中。 我已经添加了所有必要的Javascript引用,即jquery,signalR和signalr/hubs。

我在想什么?

我的代码看起来是这样的:

Global.asax文件有这个

public class Global : System.Web.HttpApplication 
    { 

     protected void Application_Start(object sender, EventArgs e) 
     { 


      RouteTable.Routes.MapHubs("~/signalr"); 


     } 

我中心是这样

[HubName("HealthCheck")] 
    public class MyConnectionClass : Hub 
    { 
     public static List<string> messages = new List<string>(); 

     public void GetServiceState() 
     { 
      Clients.updateMessages(messages); 
     } 

     public void UpdateServiceState() 
     { 
      messages.Add(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")); 

      Clients.updateMessages(messages); 
     } 

定义和我的JavaScript客户端这样的

$(function() { 
       // creates a proxy to the health check hub 
       var healthCheckHub = $.connection.healthCheck; 

       // handles the callback sent from the server 
       healthCheckHub.updateMessages = function (data) { 
        $("li").remove(); 

        $.each(data, function() { 
         $('#messages').append('<li>' + this + '</li>'); 
        }); 
       }; 

       $("#trigger").click(function() { 
        healthCheckHub.server.updateServiceState(); 
       }); 

       // Start the connection and request current state 
       $.connection.hub.start(function() { 
        healthCheckHub.server.getServiceState(); 
       }); 
      }); 

我还在客户端添加了所有必需的js引用。 我从here 中挑选了这个样本这样就够了,还是我错过了一些东西?

感谢

+0

您可以发布最少代码示例再现问题? – Pete

回答

0

考虑到误差约为未被定义的Rx我想知道,如果你可能已经安装了错误的NuGet包。这听起来像你安装了SignalR.Reactive

我认为this是你真正想要的包。 (请注意,这是一个预发布版本,我认为软件包名称在最近发生了变化,因此您所遵循的教程可能会稍微过时,这可能是导致混淆的原因。)