布局和视图上的信号器连接
Signalr connection on layout and view
所以我的布局页面上有以下代码:
$(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.cshtml 是通过主布局加载的。
$(document).ready(function () {
var connection = $.connection.notificationHub;
connection.client.onNewTicket = function (model, user, notificationId){
....
};
});
有没有办法不再调用start?不会为 onTicketUpdated 创建 1 个连接而为 onNewTicket 创建另一个完整连接吗?我不能在 index.cshtml 中使用 layout.cshtml 中的 hub.start() 吗?
这已经困扰我一段时间了,我的所有研究都没有发现任何可以修复它的方法。必须有一些方法可以做到这一点,因为为 2 个简单的函数建立 2 个不同的连接似乎是大过头了。
您可以尝试在两个页面之间共享连接:
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.");
//});
}
所以我的布局页面上有以下代码:
$(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.cshtml 是通过主布局加载的。
$(document).ready(function () {
var connection = $.connection.notificationHub;
connection.client.onNewTicket = function (model, user, notificationId){
....
};
});
有没有办法不再调用start?不会为 onTicketUpdated 创建 1 个连接而为 onNewTicket 创建另一个完整连接吗?我不能在 index.cshtml 中使用 layout.cshtml 中的 hub.start() 吗?
这已经困扰我一段时间了,我的所有研究都没有发现任何可以修复它的方法。必须有一些方法可以做到这一点,因为为 2 个简单的函数建立 2 个不同的连接似乎是大过头了。
您可以尝试在两个页面之间共享连接:
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.");
//});
}