2016-11-07 6 views
0

Selon les ressources, le code signalr devrait fonctionner, mais je ne peux pas le faire pour envoyer des notifications du serveur au client. Voici html/javascript partie:La méthode du serveur SignalR sur le client ne fonctionne pas

<script src="/Scripts/jquery-1.6.4.min.js"></script> 
<script src="/Scripts/jquery.signalR-2.2.1.min.js"></script> 
<script src="/signalr/js"></script> 

<script type="text/javascript"> 
    $(function() { 
     var cHub = $.connection.cHub; 

     $.connection.hub.logging = true; 

     cHub.client.sendMessage = function (content) { 
      $("#container-hub").append($("<p />").html(content)); 
     }; 

     $.connection.hub.start().done(function() { 
      $('[id$=bGo]').click(
        function() { 
         cHub.server.send('Sync process started'); 
        }); 
     });   
    }); 
</script> 
<div id="container-hub" style="background: red; height: 100px; width: 100%;"></div> 

Hub.cs Classe:

using Microsoft.AspNet.SignalR; 

namespace CMS.Objects 
{ 
    public class CHub : Hub 
    { 
     public void Send(string message) 
     { 
      // Call the broadcastMessage method to update clients. 
      Clients.All.sendMessage(message); 
     } 
    } 
} 

classe Startup.cs:

using Microsoft.Owin; 
using Owin; 

[assembly: OwinStartup(typeof(CMS.CStartup))] 

namespace CMS 
{ 
    public class CStartup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      app.MapSignalR();    
     } 
    } 
} 

Et voici comment je fais appel à la méthode sendMessage méthode:

private void ShowMessage(string message) 
{  
    var clients = GlobalHost.ConnectionManager.GetHubContext<CHub>().Clients; 
    clients.All.sendMessage(message); 
} 

Lorsque le bouton bGo est cliqué, le message est ajouté au div container-hub, mais rien lorsque j'appelle la méthode sendMessage.

EDIT

Quelques résultats supplémentaires; quand je l'appelle sendMessage à partir de la méthode OnConnected cela fonctionne:

public override Task OnConnected() 
{ 
    Clients.All.sendMessage("Connection Initialised"); 
    return base.OnConnected(); 
} 
+0

Etes-vous sûr que "" est-ce correct? Généralement c'est "signalr/hubs". – ravi

+0

Oui, j'en suis sûr. Comme je l'ai mentionné, la communication client-serveur fonctionne bien. – Morpheus

Répondre

0

Après avoir passé un certain temps décent pour enquêter sur le problème que je l'ai enfin trouvé la solution. Pas sûr à 100%, mais je pense que le problème était avec l'utilisation du UpdatePanel sur la page. Au lieu d'utiliser $(function() { de jQuery et il a commencé à travailler.

La raison pour laquelle j'ai mentionné que je ne suis pas sûr à 100% est que le UpdatePanel avec le ScriptManager a été supprimé plusieurs fois sans donner de résultats avant de poster la question.