jquery - SignalR 2.X 和 JQuery 3.X “ON”未触发
问题描述
我在使用任何版本的 JQuery 3.x 运行 SignalR 2.4.1 时遇到问题
我有一个非常简单的集线器,它向 AngualrJS 应用程序发送推送通知。该应用程序适用于 JQuery 1 和 2,但一旦我升级到 3,SignalR 就会停止工作。我读到了旧加载的问题,卸载。但事实并非如此,因为它已在 2.2.1 中修复
我在控制台中没有错误,angualrJS 工厂只想在通知到来时触发 ON 事件。
这是我使用的代码,它非常标准,适用于 JQuery < 3
function signalRHubProxyFactory(serverUrl, hubName, startOptions) {
var connection = $.hubConnection(signalRServer);
var proxy = connection.createHubProxy(hubName);
connection.start().done(function () { });
return {
on: function (eventName, callback) {
proxy.on(eventName, function (result) {
$rootScope.$apply(function () {
if (callback) {
callback(result);
}
});
});
},
off: function (eventName, callback) {
proxy.off(eventName, function (result) {
$rootScope.$apply(function () {
if (callback) {
callback(result);
}
});
});
},
invoke: function (methodName, callback) {
proxy.invoke(methodName)
.done(function (result) {
$rootScope.$apply(function () {
if (callback) {
callback(result);
}
});
});
},
connection: connection
};
};
return signalRHubProxyFactory;
有同样问题的人吗?
这是我的脚本列表
<script src="../Scripts/jquery-3.5.1.js"></script>
<script src="../Scripts/jquery.signalR-2.4.1.js"></script>
<script src="../Scripts/bootstrap.min.js"></script>
<script src="../Scripts/angular.min.js"></script>
谢谢
解决方案
对于遇到此问题的每个人,看起来为了使 AngularJS、SignalR 和 JQuery >= 3 工作,必须在它们之前添加 angular.js 脚本
<script src="../Scripts/angular.min.js"></script>
<script src="../Scripts/jquery-3.5.1.js"></script>
<script src="../Scripts/jquery.signalR-2.4.1.js"></script>
<script src="../Scripts/bootstrap.min.js"></script>
推荐阅读
- kubernetes - 如何在 Kubernetes 上使用事件侦听器配置在 keycloak 上启用登录/注销事件日志记录?
- memory - 如何确定 Rust 中的 new() 何时在堆栈或堆上分配
- python - 如何修复 TypeError:字符串索引必须是整数
- node.js - 尝试在 Svelte 组件中导入 sqlite3 时出错
- c - 如何在c中输入点击?
- android - 广播接收器中的 context.startActivity 有时不起作用(SDK 27 设备上的 targetSDK 19)
- python - python根据分隔符创建子列表
- node.js - 访问 app.use 外部的请求/响应对象以获取 unhandledRejection 事件处理程序
- python - 如何在 python 中动态导入模块而不是硬编码导入?
- javascript - 在 mat-dialog angular 中传递动态对象键