我使用的是SignalR 2.2.0版。使用下面的代码,我得到一个例外,说明$没有定义hubConnection。我知道我的脚本路径是正确的,因为我可以在signalr脚本中设置断点并看到它们被击中。我甚至超越了定义hubConnection功能的地方,但我仍然得到了异常。我做错了什么?
<script type="text/javascript" src="~/scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="~/scripts/jquery.signalR-2.2.0.js"></script>
<script type="text/javascript">
$(function() {
initAvailabilitySignalR("D420A92E163C43AB85CE342D5C10106B");
});
function initAvailabilitySignalR(tenantId) {
try {
var connection = $.hubConnection();
var proxy = connection.createHubProxy('SignalRHub');
proxy.on('AvailabilityChangedNotification', function(message) {
try {
alert(message.UserId + " changed from " + message.OldAvailabilityId + " to " + message.NewAvailabilityId);
} catch(ex) {
alert("Exception[On]: " + ex);
}
});
connection.start().done(function() {
try {
proxy.invoke("Connect", tenantId, "SOMEDOMAIN\\someuser");
} catch(ex) {
alert("Exception: " + ex);
}
});
} catch(ex) {
alert("Exception: " + ex);
}
};
</script>
答案 0 :(得分:2)
我发现了问题。我忘了ASP.NET MVC在页面底部呈现JQuery。我将该render语句移到了页面顶部,并从视图中删除了我对JQuery的显式声明,现在它可以正常工作。
答案 1 :(得分:0)
您还需要将SignalR的此脚本标记包括在内:
<script src="~/signalr/hubs"></script>
答案 2 :(得分:0)
我自己找到了解决方案;),我将jquery.signalR-2.4.1.js和〜/ signalr / hubs作为头部分中的最后一个js文件,但它无法正常工作,如果把它放在哪里,可能是什么问题紧接在jquery之后,它们将beofre jquery加载到系统中。