【问题标题】:How to stop SignalR from queueing alerts如何阻止 SignalR 排队警报
【发布时间】:2018-05-01 18:42:25
【问题描述】:

我有一个 .NET 应用程序,当另一个用户添加新内容时,它会向用户发送 javascript 警报。但是,如果 12 个其他用户每个都添加了一些东西,那么就会有 12 个连续的警报。我只需要一个,第一个。单击第一个警报时,有没有办法清除所有警报?谢谢你。

【问题讨论】:

  • 也许只是不要在客户端发出新警报,而是检查您是否真的应该发出新警报。
  • @poke 您将如何检查用户是否已单击警报。另请注意,有成千上万的用户。
  • 这不能在您发出警报的客户端完成吗?如果当前可见警报,则不要再次显示,与单击警报相同,设置标志或其他内容说明是否显示它们。
  • @Tyriddik 我只会在客户端这样做。服务器向客户端发送通知,然后客户端确定如何将其可视化。如果已经有警报处于活动状态,则跳过通知。

标签: javascript .net signalr


【解决方案1】:

好的,所以我通过执行以下操作找到了一种方法。

var alertHub = $.connection.EventHub;
var alertVisable = false;

// Set the Alert method
alertHub.client.Alert = function () {
    if (alertVisable === false) {
        alertVisable = true;
        //alert("New Data Available!");
        if (confirm("Additional comments are now available, would you like to load them?")) {
            refreshPage();
        }
        else {
            setTimeout(function () {
                alertVisable = false;
            }, 300000)
        }
    }
}
$.connection.hub.start().done();

我在加载时将变量设置为 false,并在调用警报时将其更改为 true。在变量再次设置为 true 之前,不会再运行任何警报。在我的情况下,我告诉取消按钮不要将变量设置回 false 5 分钟。我希望这可以帮助其他人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多