我第一次尝试使用signalR但是当我的hub' simpleEvent'总是未定义
$(document).ready(function(){
var simple = $.connection.simpleEvent;
...
如果我转到localhost / mywebapp / signalR / hubs,我收到以下错误消息:"无法从localhost下载集线器。无法打开此Internet站点。请求的网站不可用或无法找到。"。但是,如果我再试一次,那么下载的集线器就会看起来像是有正确的集线器信息,例如
// 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服务器
非常感谢任何帮助。
答案 0 :(得分: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>
答案 1 :(得分:0)
以下文件很重要(检查正确的顺序):
以下是一个示例:
<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);