gpt4 book ai didi

jquery - SignalR 客户端回调方法被多次调用

转载 作者:行者123 更新时间:2023-12-01 01:14:14 25 4
gpt4 key购买 nike

我们有一个 SignalR 客户端回调方法,当我们离开并返回其包含页面时,该方法会被调用多次。例如:页面是 salesUpdate.html(Angular 模板),第一次进入该页面时,回调将在其事件发生时执行一次。现在,当我们从该页面移至另一个页面(例如purchaseUpdate.html)并返回该页面(即salesUpdate.html)时,此SignalR客户端回调方法将执行两次。当我们离开页面并返回页面时,它会执行多次。从服务器端来看,该方法是从 ASP.NET Web API 调用的,并且 Web API 只被命中一次,后续执行的所有回调都不会命中 Web API。下面是客户端回调方法:

var con;
var apiMsgProxy;
$(document).ready(function () {
con = $.hubConnection('http://localhost:51123/signalr');
apiMsgProxy = con.createHubProxy('salesHub');

apiMsgProxy.on('SendSaleUpdate', function (uMsg) {
console.log("Call back SendSaleUpdate called - " + uMsg);
});
con.start().done(function () {
console.log("SignalR connection opened - " + con.state);
}).fail(function () {
console.log('Could not Connect SignalR hub!');
});
});

任何对此的指示将不胜感激。

最佳答案

我知道这个问题很久以前就有人问过。但我遇到了同样的问题并找到了解决方案。我想我会与大家分享。在问题中,“salesHub”被初始化,并且在页面加载时使用集线器的 .on(“SendSaleUpdate”) 方法添加事件处理程序。显然,如果您不“关闭”该处理程序,它会在客户端启动集线器时被 SignalR 调用多次(在同一连接仍打开时访问同一页面)。为了防止这种情况发生,您可以当用户离开页面时需要调用 hub 的 .off("SendSaleUpdate") 方法。这为我解决了同样的问题。

关于jquery - SignalR 客户端回调方法被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com