2012-11-12 12 views
11

मेरे पास एएसपीनेट क्लासिक वेबसाइट है। ive को काम करने के लिए सिग्नलआर मूलभूत कार्यक्षमता मिली (जहां एक ग्राहक शेष ग्राहकों को संदेश भेजता है)। लेकिन अब मैं केवल विशिष्ट कनेक्शन आईडी में संदेश भेजना चाहता हूं।सिग्नलआर एकल कनेक्शन को संदेश भेजें आईडी

मेरी हब:

** [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 कोड:

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


      }); 

समस्या मुझे नहीं वास्तव में नहीं पता हब के साथ एक विशिष्ट ConnectionID को भेजने के लिए कैसे, Clients.updateMessages के बाद से है (संदेशों); उन सभी को संदेश भेजें। मैं इसे कैसे हल करूं?

पी.एस: Send server message to connected clients with Signalr/PersistentConnection

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

कि काम किया फ्लॉप: पहले से ही देखा ive।

उत्तर

18

ठीक है, आप एक संदेश एक भी ग्राहक के लिए एक हब से तो जैसे भेज सकते हैं:

Clients.Client(someConnectionIdIWantToSendToSpecifically).doSomething(); 

चाल आप कनेक्शन आईडी आप के लिए संदेश भेजना चाहते हैं पता करने की जरूरत है। इससे भी अधिक विशेष रूप से आप संभवतः उस संदेश की तार्किक पहचान जानना चाहते हैं, जिसे आप संदेश भेजना चाहते हैं क्योंकि उस तार्किक पहचान में कई कनेक्शन हो सकते हैं या पूरी तरह से अलग कनेक्शन आईडी के तहत फिर से कनेक्ट हो गए हैं। तार्किक पहचान के लिए कनेक्शन का मानचित्रण कुछ सिग्नल एप्लिकेशन को ही छोड़ देता है।

+1

मैंने इसे बनाया ताकि उपयोगकर्ता लॉग इन होने के बाद, कनेक्शन आईडी हमेशा उपयोगकर्ता आईडी के समान ही रहेगा। मेरे आवेदन में मैंने इसे बनाया ताकि उपयोगकर्ता प्रेस बटन के बाद, मुझे पता चले कि मेरे लिए कौन है और केवल उन कनेक्शन आईडी पर संदेश भेजें। मुझे नहीं पता कि यह एक स्मार्ट चाल है या नहीं। किसी भी विचार से इसे बेहतर तरीके से कैसे कार्यान्वित किया जाए? – Timsen

+1

अधिकांश कार्यान्वयन मैंने लोगों को सक्रिय कनेक्शन आईडी के लिए तार्किक उपयोगकर्ता पहचान के एक-से-कई संबंध मैपिंग का उपयोग करने के लिए देखा है। –

+0

अंतिम प्रश्न, अगर मैं ऑफ़लाइन है तो एक कनेक्शन आईडी को संदेश भेजता हूं तो क्या खुशी होगी? – Timsen