2016-08-03 12 views
0

Ich entwickle meine erste Chrome-Erweiterung. Und ich habe Signal R 2 implementiert, um Chrome-Benachrichtigungen anzuzeigen. Problem ist, dass, wenn die Erweiterung für einige Zeit idol ist, es keine Benachrichtigungen mehr zeigt und in der Zwischenzeit, wenn ich die background.js debugge (indem ich die Hintergrundseite der Erweiterung öffne), zeigt es die Benachrichtigungen an.Ich muss Chrome-Erweiterung neu laden, um Benachrichtigung anzuzeigen

Hier ist mein Signal R Implementierung

[HttpGet] 
    public void SendNotificationYealink(string mac, string ip, string model, string active_url, string active_user, string active_host, string local, string remote, string display_local, string display_remote, string call_id, string action) 
    { 
     var context = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>(); 
     context.Clients.All.addNotificationToExtension("Arslan", "Active_User =" + active_user + 
      ", Local =" + local + ", Remote =" + remote + ", Display_Local =" + display_local + ", Display_Remote =" + display_remote + ", Call Id=" + call_id); 
    } 

And My background.js

$(function() { 

var connection = $.hubConnection(); 
connection.url = 'http://localhost:8089/signalr'; 
var notificationHubProxy = connection.createHubProxy('notificationHub'); 
notificationHubProxy.on('addNotificationToExtension', function (callFrom, phoneNumber) { 

    var firstRun = 
     { 
      type: "basic", 
      title: callFrom, 
      message: phoneNumber, 
      iconUrl: "icon.png" 
     } 
    chrome.notifications.create(firstRun); 
}); 

connection.start().done(function() { 
    console.log('Connection established.'); 
}); 
}) 
+0

Verwenden Sie "persistent": false für Ihre Hintergrundseite? Versuchen Sie es zu entfernen. – wOxxOm

+0

Nein, ich habe es bereits entfernt. –

+0

Versuchen Sie, den Wrapper zu entfernen ('$ (function() {...'), es dient Null Zweck innerhalb der Erweiterung Hintergrundseite. – wOxxOm

Antwort

0

Offensichtlich werden die Variablen innerhalb des Verschlusses zerstört, sobald es einmal ausgeführt wurde, zusammen mit notificationHubProxy und seine Ereignislistener.

Entfernen Sie die ($(function() { ... })() Wrapper um den Code, es dient Null Zweck in einer Hintergrundseite einer Erweiterung, da es in seiner eigenen isolierten Umgebung ausgeführt wird, so dass Sie die Variablen von niemandem verstecken müssen.

Auf der off-Chance ist dies ein Verfahren zur Herstellung des DOM von Hintergrundseite sicherzustellen, initialisiert und Sie haben tatsächlich DOM-Elemente im Innern, einfach Ihr <script src="background.js"></script> bis Ende background.html vor einem Schließen </body> Tag bewegen.

+0

Yeah toll, dass für mich gearbeitet hat. –