2012-05-23 5 views
5

भी एक मुद्दा here के रूप में इस खोला लेकिन उम्मीद किसी को इस ..SignalR कनेक्ट/डिस्कनेक्ट हब ऊपर चल रही है

मैं एक बहुत ही सरल हब कि IConnected/IDisconnect लागू करता मिल गया है देखा है। एक स्टैंडअलोन प्रोजेक्ट में, इस हब ने बहुत अच्छा परीक्षण किया।

जब मैंने इसे अपने असली प्रोजेक्ट में गिरा दिया, जहां मेरे पास पहले से ही कुछ अन्य केंद्र हैं, तो इसके परिणामस्वरूप कोई हब उपलब्ध नहीं हुआ (पुष्टि हुई कि कोई भी/सिग्नल/हब्स में दिखाई नहीं दे रहा है)। मैंने फिर इस हब में आईकनेक्टेड/आईडीिसकनेक्ट पर टिप्पणी की और फिर से संकलित किया, और यह बाकी के साथ दिखाई दिया। इंटरफेस को वापस जोड़कर यह सब टूट गया।

क्या किसी ने इसे पहले देखा है? क्या कुछ कॉन्फ़िगरेशन गुम या कुछ है?

public class ChatHub : Hub, IConnected, IDisconnect 
{ 
    public void Test(string message) 
    { 

    } 

    public System.Threading.Tasks.Task Connect(IEnumerable<string> groups) 
    { 
     this.Clients.onNewUserOnline(Context.ConnectionId); 
     return new Task(() => { }); 
    } 


    public Task Reconnect(IEnumerable<string> groups) 
    { 
     this.Clients.onNewUserOnline(Context.ConnectionId); 
     return new Task(() => { }); 
    } 

    public Task Disconnect() 
    { 
     this.Clients.onUserOffline(Context.ConnectionId); 
     return new Task(() => { }); 
    } 
} 

उत्तर

7

यहाँ एक समान प्रश्न Is there a way to get number of connections in Signalr hub group?

के लिए एक लिंक है कि फ्लॉप मदद आप SignalR में 0.5.1

कनेक्शन राज्य परिवर्तन

नया कनेक्शन राज्य सामान पर दिखाई दे सकता है

एक सिग्नलर कनेक्शन हमेशा उपयोगकर्ता के लिए एक ब्लैक बॉक्स रहा है और इससे अंतर्निहित कनेक्शन स्थिति में परिवर्तनों का पता लगाना मुश्किल हो गया है। हमने जावास्क्रिप्ट और .NET क्लाइंट में एक नया राज्य बदल दिया कार्यक्रम का खुलासा किया है। यह आपको राज्य के परिवर्तनों को सुनने और विभिन्न तरीकों से प्रतिक्रिया करने की अनुमति देता है। यहां एक उदाहरण दिया गया है जो उपयोगकर्ता को एक संदेश दिखाता है यदि कनेक्शन एक पुन: कनेक्ट करने वाली स्थिति में चला गया और 10 सेकंड के बाद ठीक नहीं हुआ:

var chat = $.connection.chat; 
var timeout = null; 
var interval = 10000; 
chat.addMessage = function (msg) { 
    $('#messages').append('<li>' + msg + '</li>'); 
}; 
$.connection.hub.stateChanged(function (change) { 
    if (change.newState === $.signalR.connectionState.reconnecting) { 
     timeout = setTimeout(function() { 
      $('#state').css('backgroundColor', 'red') 
       .html('The server is unreachable...'); 
     }, interval); 
    } else if (timeout && change.newState === $.signalR.connectionState.connected) { 
     $('#state').css('backgroundColor', 'green') 
      .html('The server is online'); 
     clearTimeout(timeout); 
     timeout = null; 
    } 
}); 
$.connection.hub.start();