2012-11-12 24 views
11

göndermek. SinyalR temel işlevselliği (bir istemcinin istemcilerin geri kalanına ileti gönderdiği) çalışmak için var. ancak şimdi sadece belirli bağlantılar için Mesajlar göndermek istiyorum.SignalR Ben bir asp.net klasik web sitesi var tek connectionId

benim 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); 
     } 

    }** 

Asp kodu:

 <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(); 
       }); 


      }); 

Sorun i Clients.updateMessages beri, göbek ile belirli bir ConnectionID göndermek bilen gerçekten dont (mesajlar); hepsine mesaj gönder. Bunu nasıl çözebilirim?

P.S.: Send server message to connected clients with Signalr/PersistentConnection

ve çalışmış vermedi

http://riba-escapades.blogspot.dk/2012/05/signalr-send-messages-to-single-client.html: Zaten baktı ive.

cevap

18

Eh, şöyle bir Hub tek bir müşteriye bir mesaj gönderebilir:

Clients.Client(someConnectionIdIWantToSendToSpecifically).doSomething(); 

hüner size mesaj göndermek istediğiniz bağlantı kimliğini bilmek gerekir olduğunu. Daha da spesifik olarak, bu mantıksal kimliğin birden çok bağlantıya sahip olabileceğinden veya tamamen farklı bir bağlantı kimliği altında düşüp yeniden bağlanabildiğinden, iletiyi göndermek istediğiniz şeyin mantıksal kimliğini bilmek isteyebilirsiniz. Mantıksal kimliklere bağlantıların eşleştirilmesi, SignalR'ın uygulamanın kendisine bıraktığı bir şeydir. kullanıcı giriş sonra, connectionID hep kullanıcı kimliği ile aynı olacak şekilde

+1

ben yaptım. Uygulamamda, kullanıcı gönder düğmesine bastıktan sonra, benim için akıl sahibi olan kişiyi bulup yalnızca bu bağlantı kimliğine mesaj yolladım. Akıllı bir hareket olup olmadığını bilmiyorum. Bunu daha akıllı bir şekilde nasıl uygulayacağınız hakkında bir fikrin var mı? – Timsen

+1

İnsanların kullandıkları uygulamaların çoğu, mantıksal kullanıcı kimliğinin aktif bağlantı kimliklerine bire çok ilişki ilişkisi eşlemesi kullanıyor. –

+0

Son olarak, çevrimdışı olan bir connectionID'ye mesaj gönderirsem ne olur? – Timsen

İlgili konular