布局和视图上的信号连接

本文关键字:信号 连接 视图 布局 | 更新日期: 2023-09-27 17:58:56

所以我的布局页面上有以下代码:

$(document).ready(function() {
    var connection = $.connection.notificationHub;
    connection.client.onTicketUpdated = function (model, user, notificationId) {
        ....
    }
    $.connection.hub.start().done(function () {
        console.log("Successfully connected to CoreHub.");
    });

该动作应该发生在任何页面上。因此,通知可以显示在主栏中。然而,我有另一个页面,比如Index.chtml,它是通过主布局加载的。

$(document).ready(function () {
    var connection = $.connection.notificationHub;
    connection.client.onNewTicket = function (model, user, notificationId){
        ....
    };
});

有没有办法不再叫start?这不会为onTicketUpdated创建一个连接,为onNewTicket创建另一个完整的连接吗?我可以不使用index.cshtml中layout.cshtml中的hub.start()吗?

这已经困扰了我一段时间,在我所有的研究中,我都没有发现任何修复它的方法。必须有一些方法来做到这一点,因为为两个简单的函数建立两个不同的连接似乎是一种严重的过度杀戮。

布局和视图上的信号连接

您可以尝试在两个页面之间共享连接:

Layout.cshtml:

var connection;
$(document).ready(function() {
    connection = connection || $.connection.notificationHub;
    connection.client.onTicketUpdated = function (model, user, notificationId) {
        ....
    }
    $.connection.hub.start().done(function () {
         console.log("Successfully connected to CoreHub.");
    });
}

Index.cshtml:

$(document).ready(function() {
    connection = connection || $.connection.notificationHub;
    connection.client.onNewTicket = function (model, user, notificationId) {
        ....
    }
    //$.connection.hub.start().done(function () {
    //     console.log("Successfully connected to CoreHub.");
    //});
}