每个站点的所有打开的选项卡只有一次浏览器通知

时间:2016-05-25 03:52:15

标签: c# asp.net asp.net-mvc signalr

我有一个由C#ASP.Net MVC 5.0提供支持的新闻网站,我想在管理员添加/编辑或删除新闻时将通知推送到客户端浏览器。
所以我在我的模板中添加了一个信号器脚本,用于所有页面。

_Layout.cshtml

var notificationsHub = $.connection.notificationHub;
$.connection.hub.start();
jQuery(function($) {
    notificationsHub.client.Toast = function (title, body) {
        var options = {
            body: body,
        };
        var notification = new Notification(title, options);
    };
});

并将此代码添加到新闻添加/编辑/删除完成后重定向的页面

<script>
    $.connection.hub.start().done(function() {
        notificationsHub.server.toast('@NotificationHub.Type.ToString()', '@Html.Raw(NotificationHub.Title)', '@Html.Raw(NotificationHub.Body)');
    });
</script>

当我添加/编辑/删除新闻时它工作正常,但问题是它将通知推送到我网站中所有打开的标签。是否有诀窍可以避免这种情况发生,并且每个网站只显示一个浏览器通知?

2 个答案:

答案 0 :(得分:0)

然后您必须知道打开的标签页数和使用的URL。请参阅&#34; How to get the number of tabs opened of my web in a browser using jquery?&#34;因为出于隐私原因,这不是一个需要讨论的问题。

答案 1 :(得分:0)

好的,我在SO question找到了答案 诀窍是在选项中使用tag

var notificationsHub = $.connection.notificationHub;
$.connection.hub.start();
jQuery(function($) {
    notificationsHub.client.Toast = function (title, body) {
        var options = {
            body: body,
            tag: 'my-unique-id',
        };
        var notification = new Notification(title, options);
    };
});