2016-12-17 3 views
4

Web Notification意味this(通知APIの通知インターフェイスは、デスクトップ通知を設定してユーザーに表示するために使用されます)。
私はAsp.Net MVC Webアプリケーションを持っており、クライアントに通知を送るはずのページにボタンがあります。
また、メッセージとコール通知機能をプッシュするためにsignalrを使用しました。複数のタブが開いているときにFirefoxのデスクトップ通知が表示されない

は私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で表示/動作を停止します。 (単一のタブが開いているときに機能します)。
このバグはFirefoxでのみ発生し、ChromeとIEでうまく機能します。

animated gif

更新1: 私はハブメソッドが呼び出されるので、その問題をsignalrないと思います。
この行は、すべてのタブ上で呼び出されます。 console.log('the hub method called sucessfully');
とsignalrロギングがいることを言う:

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 

答えて

0

ご質問はthis one.

に似ていると私はthis answer.

からIWC-SignalRを使用することをお勧め
+0

私はあなたに答えました。残念ながらそれは私の問題を解決していません。私は私の質問を更新しました。 – mhesabi

0

この問題はWeb Socketに関連しています。まず、WebSocketを有効にする必要があります。

$.connection.hub.logging = true; 

、あなたはユーザーソケットあなたの接続を検出するための機能を開始することができます。

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

これはFirefoxのバグです。

私のために働く方法は、別の時間に通知を呼び出しました。これは完全な修正ではありませんが、うまくいきます。

var randomTime = Math.floor((Math.random() * 20) + 1) * 50; 

      setTimeout(function() { 
       newNotification = new Notification(Title, NotificationContent); 
      }, randomTime); 
関連する問題