2016-10-15 4 views
3

Je suis en train d'utiliser signalr dans mes extensions de chrome, mais je continue à obtenirComment utiliser signalr dans les extensions chrome

'Uncaught TypeError: Cannot read property 'client' of undefined' 

Maintenant, je sais que je dois utiliser un script

<script src="http://localhost:3600/signalr/hubs"></script> 

comme celui-ci , mais je ne peux pas savoir où et comment l'utiliser dans les extensions de chrome.

Mon fichier manifeste ressemble à ce

"manifest_version": 2,  
    "name": "Jquery Tests", 
    "description": "This extension tests jquery.", 
    "version": "1.0",  
    "background": { 
    "scripts": ["jquery-1.9.1.min.js", "jquery.signalR-2.2.1.min.js", "background.js"], 
    "persistent": true 
    },  
    "content_scripts": 
    [ 
     { 
      "matches": ["http://*/*", "https://*/*"], 
      "js": ["jquery-1.9.1.min.js", "jquery.signalR-2.2.1.min.js", "popup.js"] 
     } 
    ],  

    "permissions": [ 
    "notifications", 
    "background", 
    "tabs", "http://*/*" 
    ],  
    "browser_action": { 
    "default_icon": "img/icon.png", 
    "default_popup": "popup.html" 
    } 

et voici mes popup.js où je reçois l'erreur

$(document).ready(function() {  
    debugger; 
    console.log('jquery working in content!'); 
    $.connection.hub.url = "http://localhost:3360/signalr"; 
    $.connection.logging = true; 
    var ticker = $.connection.notificationHub; 
    //var ticker = $.connection.tempratureMonitorHub; 

    //signalr method for push server message to client 
    ticker.client.notify = function (message) { 
     console.log("Notification added!"); 
     if (message && message.toLowerCase() == "added") { 
      updateNotificationCount(); 
     } 
    } 
}); 
[][1] 
+0

S'il vous plaît vérifier solution donnée dans ce [SO post] (http://stackoverflow.com/questions/20596964/uncaught-typeerror-cannot-read-property-server-of-undefined), ainsi que l'API donnée [guide] (https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client). J'espère que cela aide! – Teyam

Répondre

1

dans les extensions de chrome, le proxy dynamique créé par exemple hubs fichier est indisponible car les fichiers sont chargés une fois par installation. Ce fichier contient les informations de client et serveur. Pour inclure cette information dans votre extension, vous devez suivre les étapes suivantes comme indiqué dans this link

  1. Installer le Microsoft.AspNet.SignalR.Utils package NuGet.
  2. Ouvrez une invite de commande et accédez au dossier outils contenant le fichier SignalR.exe. Le dossier d'outils est à l'adresse suivante:

    [votre solution dossier] \ packages \ Microsoft.AspNet.SignalR.Utils.2.1.0 \ tools

  3. Entrez la commande suivante:

    signalr ghp /path:[path to the .dll that contains your Hub class] 
    
    The path to your .dll is typically the bin folder in your project 
    folder. 
    

    Cette commande crée un fichier nommé server.js dans le même dossier que signalr.exe.

  4. Mettre les server.js fichier dans un dossier approprié dans votre projet, Renommez-le pour votre application, et ajouter une référence à en place de la référence « signalr/plaques tournantes ».