Question

Je le moyeu suivant dans mon application MVC d'où je voudrais envoyer un message simple à mon code côté client:

using SignalR.Hubs;  

public  class Progress : Hub
        {
            public void 

Send(string message)
            {
                // Call the addMessage method on all clients
                Clients.addMessage(message);
            }

            public Progress()
            {
               Clients.addMessage("Starting to analyze image");
            }                 
        }

Et le javascript suivant à mon avis

    <script src="/Scripts/jquery.signalR.js" type="text/javascript"></script>
<script src="/signalr/hubs" type="text/javascript"></script>

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

        // Proxy created on the fly
        var connection = $.connection('/signalr/hubs/progress');

        // Declare a function on the chat hub so the server can invoke it
        connection.addMessage = function (message) {
            $('#messages').append('<li>' + message.Content + '</li>');
        };


        // Start the connection
        connection.start();
    });
</script>
}

Mon problème est lorsque le code appelle le constructeur, ou la méthode d'envoi pour cette question, l'objet de clients est nulle.

Tout semble OK lorsque je déboguer le code côté client. Le / signalr / hubs / code javascript retourne route et il n'y a aucune erreur lorsque le javascript est exécuté.

Je peux ajouter que le code de back-end fonctionne sur le dessus de l'environnement Umbraco CMS 5 que je ne suis pas sûr est à l'origine des perturbations.

Toutes les suggestions sur la façon dont je peux déboguer / résoudre ce problème?

Était-ce utile?

La solution

On dirait que vous essayez de diffuser un message à partir du code côté serveur par instancier le moyeu. Malheureusement, il ne fonctionne pas comme ça. Vous pouvez voir un exemple de la façon d'envoyer des messages à partir du côté serveur ici: https://github.com / SignalR / SignalR / wiki / Moyeux . Jetez un oeil à la section « Diffusion sur un Hub à l'extérieur d'un Hub ».

Le suivant sera utilisé sur le côté serveur où vous voulez faire la diffusion de

using SignalR.Infrastructure;

string message = "Test Message";
IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
dynamic clients = connectionManager.GetClients<MyHub>();
clients.addMessage(message);

correspond à votre méthode de Send() si vous essayez d'installer un indicateur de progression vous voulez probablement que pour envoyer des messages à l'appelant. Dans ce cas, vous devez mettre à jour la méthode Progress à Caller.addMessage("Starting to analyze image");. Pour ce faire, à l'extérieur du moyeu est un peu plus délicat que vous aurez besoin de garder une trace de l'identifiant client pour la connexion que vous souhaitez mettre à jour. Une fois que vous savez que les modifications ci-dessus:

clients[clientId].addMessage(message);

Autres conseils

Vous devez lire les documents. Tout dans votre échantillon semble erroné. Commencez ici:

https://github.com/SignalR/SignalR/wiki/QuickStart-Hubs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top