$.hubConnection 未定义
$.hubConnection is undefined
我使用的是 SignalR 2.2.0 版。使用下面的代码,我得到一个异常,指出 $ 没有定义 hubConnection。我知道我的脚本路径是正确的,因为我可以在信号器脚本中设置断点并看到它们被命中。我什至跳过了定义 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>
您还需要包含此脚本标记,SignalR 才能正常工作:
<script src="~/signalr/hubs"></script>
我发现了问题。我忘记了 ASP.NET MVC 在页面底部呈现 JQuery。我将该渲染语句移至页面顶部,并从视图中删除了 JQuery 的显式声明,现在它可以工作了。
我自己找到了解决方案 ;),我把 jquery.signalR-2.4.1.js 和 ~/signalr/hubs 作为 head 部分的最后一个 js 文件,它工作不知道什么问题可能出在 jquery 之后,它们会在 jquery 加载到系统之前加载。
我使用的是 SignalR 2.2.0 版。使用下面的代码,我得到一个异常,指出 $ 没有定义 hubConnection。我知道我的脚本路径是正确的,因为我可以在信号器脚本中设置断点并看到它们被命中。我什至跳过了定义 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>
您还需要包含此脚本标记,SignalR 才能正常工作:
<script src="~/signalr/hubs"></script>
我发现了问题。我忘记了 ASP.NET MVC 在页面底部呈现 JQuery。我将该渲染语句移至页面顶部,并从视图中删除了 JQuery 的显式声明,现在它可以工作了。
我自己找到了解决方案 ;),我把 jquery.signalR-2.4.1.js 和 ~/signalr/hubs 作为 head 部分的最后一个 js 文件,它工作不知道什么问题可能出在 jquery 之后,它们会在 jquery 加载到系统之前加载。