17 votes

SignalR envoie un message à une seule connectionId

J'ai un site web asp.net classic. J'ai réussi à faire fonctionner la fonctionnalité de base de SignalR (où un client envoie des messages au reste des clients). Mais maintenant je veux envoyer des messages seulement à des connectionsIDs spécifiques.

mon Hub :

**    [HubName("chatHub")]
    public class ChatHub : Hub 
    {
        public static List<string> messages = new List<string>();

        public void GetServiceState()
        {
            Clients.updateMessages(messages);
        }

        public void UpdateServiceState()
        {
            messages.Add(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));

            Clients.updateMessages(messages);
        }

    }**

Code Asp :

        <script type="text/javascript">
            $(function () {
                // creates a proxy to the health check hub

                var healthCheckHub = $.connection.chatHub;
                console.log($.connection.hub)
                // handles the callback sent from the server
                healthCheckHub.updateMessages = function (data) {
                    $("li").remove();

                    $.each(data, function () {
                        $('#messages').append('<li>' + this + '</li>');
                        console.log($.connection);
                    });
                };

                $("#trigger").click(function () {
                    healthCheckHub.updateServiceState();
                });

                // Start the connection and request current state
                $.connection.hub.start(function () {
                    healthCheckHub.getServiceState();
                });

            });

Le problème est que je ne sais pas vraiment comment envoyer à une ConnectionID spécifique avec le hub, puisque Clients.updateMessages(messages) ; envoie des messages à toutes les ConnectionID. Comment puis-je résoudre ce problème ?

P.S : j'ai déjà regardé : Envoyer un message du serveur aux clients connectés avec Signalr/PersistentConnection

y http://riba-escapades.blogspot.dk/2012/05/signalr-send-messages-to-single-client.html

qui n'a pas fonctionné.

33voto

Drew Marsh Points 22002

Eh bien, vous pouvez envoyer un message à un seul client à partir d'un Hub comme suit :

Clients.Client(someConnectionIdIWantToSendToSpecifically).doSomething();

Le truc, c'est que vous devez connaître l'ID de la connexion à laquelle vous voulez envoyer le message. Plus précisément, vous devez probablement connaître l'identité logique de la chose à laquelle vous voulez envoyer le message, car cette identité logique peut avoir plusieurs connexions ou avoir été abandonnée et reconnectée sous un identifiant de connexion complètement différent. Le mappage des connexions aux identités logiques est quelque chose que SignalR laisse à l'application elle-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X