2017-06-03 1 views
1

Je travaille sur un projet signalR, le projet inclut une API Web dans l'API J'ai ajouté ma classe hub puis j'ai créé un client javascript séparé pour travailler avec ce client , grâce à cela J'ai eu l'erreur dit examhub 'Hub n'a pas pu être résolu. et je ne sais pas pourquoi n'importe quelle aide.hub n'a pas pu être résolu dans SignalR

Mon code Hub:

public class ExamHub : Hub 
{ 
    public void Send(string name , string message) 
    { 
     Clients.All.broadcast(name, message); 
    } 
} 

Javascript client:

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <script src="https://code.jquery.com/jquery-2.2.4.min.js" 
      integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" 
      crossorigin="anonymous"></script> 
    <script src="~/Scripts/jquery.signalR-2.2.2.js"></script> 
    <script src="http://localhost:51822/signalr/hubs"></script> 
    <title>SignalR</title> 
</head> 
<body> 
    <div> 
    </div> 
    <script type="text/javascript"> 
     $(function() { 
      var exam = $.connection.examHub; 

      exam.client.broadcast = function (name, message) { 
       alert(name + "" + message); 
      } 
      $.connection.hub.start().done(function() { 
       exam.server.send("Alameer", "Hi"); 
      }); 
     }); 
    </script> 

</body> 

</html> 

Répondre

0

Vous avez probablement oublié d'inclure le proxy généré signalr/hubs. Essayez d'ajouter cette ligne à votre code javascript:

<script src="signalr/hubs"></script> 
+0

Non ce n'était pas le problème, le proxy déjà inclus le problème était dans le hub connecté, j'ai oublié d'ouvrir la connexion correctement, à côté de quelques changements dans le global $. hub.url = "http: // localhost: 51822/signalr". Mais merci beaucoup. – AlameerAshraf

1

Lorsque vous configurez signalr dans le api vous configurez l'URL que votre client doit écouter aussi. Dans l'exemple ci-dessous si mon api est http://localhost:51822 l'URL mon client écoutera serait

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     // Any connection or hub wire up and configuration should go here 
     app.MapSignalR("/signalr", new HubConfiguration()); 
    } 

} 

}

Ensuite, dans le projet client configurerait il est javascript connexion signalr comme si

<script type="text/javascript"> 
$(function() { 

    var hub = $.connection.myHub; 
    $.connection.hub.url = 'http://localhost:51822/signalr'; 

    $.connection.hub.start(); 
}); 
</script> 

Gardez à l'esprit que vous devrez probablement autoriser CORS dans votre environnement de développement. Je ne recommanderais pas de mettre en place votre projet de sorte que CORS soit autorisé en production à moins que ce ne soit l'une de vos exigences. N'incluez pas non plus dans le code le Hub que vous devez configurer. Cette information peut être trouvée here