Как запретить SignalR ставить предупреждения в очередь

У меня есть приложение .NET, которое отправляет пользователям предупреждение javascript, когда другой пользователь добавляет что-то новое. Однако, если каждый из 12 других пользователей что-то добавит, появятся 12 предупреждений подряд. Мне нужен только один, первый. Есть ли способ очистить все предупреждения при нажатии первого? Спасибо.

Может быть, просто не создавайте новые оповещения на стороне клиента, а проверьте, действительно ли вам нужно создавать новые.

poke 01.05.2018 20:52

@poke Как бы вы проверили, нажал ли пользователь предупреждение. Также имейте в виду, что есть тысячи пользователей.

Tyriddik 01.05.2018 20:54

Нельзя ли это сделать на стороне клиента, где вы поднимаете тревогу? Если предупреждение отображается в настоящее время, не показывайте его снова, то же самое с щелчком по предупреждению, установкой флага или чем-то еще, говорящим, отображать их или нет.

KryptoBeard 01.05.2018 21:16

@Tyriddik Я бы сделал это только на стороне клиента. Сервер отправляет уведомление клиенту, а затем клиент определяет, как это визуализировать. Если оповещение уже активно, просто пропустите его.

poke 01.05.2018 22:07
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 минут. Надеюсь, это поможет другим.

Другие вопросы по теме