打开多个选项卡时,Firefox桌面通知不显示

时间:2016-12-17 11:54:24

标签: asp.net firefox signalr

Web Notification我的意思是this(通知API的通知界面用于配置和向用户显示桌面通知)。
我有Asp.Net MVC网络应用程序,我的页面中有一个按钮,可以向客户发送通知 我还使用signalr来推送消息和呼叫通知功能。

我的layout.cshtml看起来像这样:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
</head>
<body>
    <button id="btn" type="button">click</button>
    @RenderBody()
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script>
    <script src="~/signalr/hubs"></script>
    <script>
        jQuery(function ($) {
            var myHub = $.connection.chatHub;
            myHub.client.addNewMessageToPage = function (title, message) {
                var options = {
                    body: message,
                    tag: 'aaa'
                }

                // check permissions if already granted
                if (Notification.permission === "granted") {
                    var notification = new Notification(title, options);
                } else if (Notification.permission !== 'denied') {
                    // request permission
                    Notification.requestPermission(function (permission) {
                        // If the user accepts, let's create a notification
                        if (permission === "granted") {
                            var notification = new Notification(title, options);
                        }
                    });
                }

                console.log('the hub method called sucessfully');
            }
            $.connection.hub.logging = true;
            $.connection.hub.start().done(function () {
                $('#btn').on('click', function () {
                    myHub.server.send('foo', 'bar');
                });
            });
        });
    </script>
</body>
</html>

问题是,当我的应用程序的多个页面打开时,推送通知在firefox中停止工作/显示。 (单个标签打开时有效。) 这个bug只发生在firefox中,并且在chrome和IE中运行良好。

animated gif

更新1: 我认为它不是信号器问题,因为调用了hub方法。
在所有选项卡上调用此行: console.log('the hub method called sucessfully');
和信号器记录说:

SignalR: Invoking myhub.Send jquery.signalR-2.2.1.min.js
SignalR: Triggering client hub event 'addNewMessageToPage' on hub 'MyHub'. jquery.signalR-2.2.1.min.js
foo bar
SignalR: Invoked myhub.Send jquery.signalR-2.2.1.min.js

2 个答案:

答案 0 :(得分:0)

您的问题类似于this one.

我建议使用this answer.

中的IWC-SignalR

答案 1 :(得分:0)

此问题与Web Socket有关。您必须先启用websocket。

$.connection.hub.logging = true;

然后您可以使用套接字启动功能来检测您的连接。

$.connection.hub.start({ transport: 'webSockets' }).done(function () { .. });