首页 > 解决方案 > 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>

谢谢

标签: jqueryangularjsbootstrap-4signalr

解决方案


对于遇到此问题的每个人,看起来为了使 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>


推荐阅读