2012-08-05 107 views
1

我试图使用signalR首次然而,当我中心 'simpleEvent' 永远是不确定的signalR未定义

$(文件)。就绪(函数(){

var simple = $.connection.simpleEvent; 

...

如果我转到localhost/mywebapp/signalR/hubs,我收到以下错误消息:“无法从本地主机下载集线器,无法打开此Internet站点,请求的站点不可用或无法找到。 。但是,如果我再试一次,然后下载集线器,它看起来像它有相应的CT中心的信息,如

// Create hub signalR instance 
$.extend(signalR, { 
    simpleEvent: { 
     _: { 
      hubName: 'MyCorp.Siep.App.Web.UI.SimpleEventHub', 
      ignoreMembers: ['init', 'timerExpired', 'namespace', 'ignoreMembers', 'callbacks'], 
      connection: function() { return signalR.hub; } 
     }, 

     init: function (callback) { 
      return serverCall(this, "Init", $.makeArray(arguments)); 
     }, 

     timerExpired: function (state, callback) { 
      return serverCall(this, "TimerExpired", $.makeArray(arguments)); 
     } 
    } 
}); 

signalR.hub = signalR("/App.Web.UI/signalr") 
    .starting(function() { 
     updateClientMembers(signalR); 
    }) 
    .sending(function() { 
     var localHubs = []; 

     $.each(hubs, function (key) { 
      var methods = []; 

      $.each(this, function (key) { 
       if (key === "obj") { 
        return true; 
       } 

       methods.push(key); 
      }); 

      localHubs.push({ name: key, methods: methods }); 
     }); 

     this.data = window.JSON.stringify(localHubs); 
    }) 
    .received(function (result) { 
     var callbackId, cb; 
     if (result) { 
      if (!result.Id) { 
       executeCallback(result.Hub, result.Method, result.Args, result.State); 
      } else { 
       callbackId = result.Id.toString(); 
       cb = callbacks[callbackId]; 
       if (cb) { 
        callbacks[callbackId] = null; 
        delete callbacks[callbackId]; 
        cb.callback.call(cb.scope, result); 
       } 
      } 
     } 
    }); 

我已经试过了SignalR样本,他们的工作很好,我已经阅读了大量有关这个错误,其中大部分似乎是因为不正确,其他论坛上的帖子,我假设如果我可以下载集线器,那么这不是问题。还有什么可能导致这个问题?

我试图内使用signalR: - 一个Web应用项目 - Visual Studio 2010中部署服务器中运行,并且IIS 7 - Intenert Explorer 8中 - Windows 2008 Server的

任何帮助将不胜感激。

回答

0

检查你的母版页,你是否已经把正确的脚本引用

<script src="../Scripts/jquery-1.6.4.js" type="text/javascript"></script> 
<script src="../Scripts/jquery.signalR.js" type="text/javascript"></script> 
<script src="../signalr/hubs" type="text/javascript"></script> 
0

以下文件是重要的(检查正确的顺序):

  1. jQuery的JS文件
  2. SignalR JS文件
  3. HubFile Optinal如果您正在使用生成的集线器。

这里有一个例子:

<script src="Scripts/jquery-1.10.2.min.js"></script> 
<script src="Scripts/jquery.signalR-2.1.0.min.js"></script> 
<script src="signalr/hubs"></script> 

检查所引用的文件在目录(也许你有一个控制台错误引用的文件丢失

如果你正在使用。生成的集线器代理,重要的是您没有禁用hubproxy文件的自动生成(路径必须正确)

var hubConfiguration = new HubConfiguration(); 
hubConfiguration.EnableDetailedErrors = true; 
hubConfiguration.EnableJavaScriptProxies = false; 
app.MapSignalR("/signalr", hubConfiguration);