2012-12-10 13 views
6

मुझे अपने हब में ऑनकनेक्टेड और ऑनडिस्कनेक्टेड ओवरराइड के साथ परेशानी नहीं है।सिग्नलआर ऑनकनेक्टेड और ऑन डिस्क कनेक्ट नहीं किया गया

public class OnlineHub : Hub 
{ 
    public void TestMethod() 
    { 
     var a = 1; 
    } 

    public override System.Threading.Tasks.Task OnConnected() 
    { 
     return Clients.All.connected(Context.ConnectionId, DateTime.Now.ToString()); 
    } 

    public override System.Threading.Tasks.Task OnDisconnected() 
    { 
     return Clients.All.disconnected(Context.ConnectionId, DateTime.Now.ToString()); 
    } 
} 

और एक aspx पेज:

प्रतिकृति प्रयोजनों के लिए, मैं एक बहुत ही सरल हब मिल गया है

<script type="text/javascript"> 
    $(function() { 
     $("#btn").click(function() { 
      $.connection.onlineHub.server.testMethod(); 
     }); 

     $.connection.onlineHub.server.connected = function (id, date) { 
      $("#results").append("connected: " + id + " : " + date + "</br>"); 
     }; 

     $.connection.onlineHub.server.disconnected = function (id, date) { 
      $("#results").append(("connected: " + id + " : " + date + "</br>"); 
     }; 

     $.connection.onlineHub.connection.start(); 
    }); 

</script> 

मैं jQuery 1.6.4 का उपयोग कर रहा है और सिग्नलआर 1.0.0-अल्फा 2। क्लाइंट साइड कनेक्ट और डिस्कनेक्ट किए गए तरीकों को निष्पादित नहीं किया जा रहा है। और अगर मैं ऑनकनेक्टेड या ऑनडिस्कनेक्टेड में ब्रेकपॉइंट डालता हूं, तो ब्रेकपॉइंट्स हिट नहीं होते हैं।

कनेक्शन मेरे टेस्टमेड कॉल के ठीक होने के कारण किया जा रहा है और मुझे कनेक्शन मिल रहा है सिग्नलआर के वार्ता कॉल से वापस।

मुझे यकीन है कि मुझे कुछ आसान याद आ रहा है।

अग्रिम धन्यवाद।

उत्तर

11

आपका क्लाइंट संचालकों शायद इस तरह दिखना चाहिए:

$.connection.onlineHub.client.connected = function(){...} 
+0

उत्तर के लिए धन्यवाद, इस मामले में, जिस तरह से मैं इसे कर रहा हूं वह सही है क्योंकि यह एक हैंडलर नहीं है, लेकिन एक विधि की परिभाषा जिसे सर्वर कॉल कर सकता है। वैसे भी धन्यवाद। :) – DavidGouge

+2

मुझे यकीन है कि मैं सही हूँ! https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client –

+0

यह मेरे लिए काम नहीं करता है। https://stackoverflow.com/questions/47157099/signalr2-onconnected-not-working-as-per- दस्तावेज – Developer

2

यह पता चल। मैं नहीं बल्कि ग्राहक से सर्वर ऑब्जेक्ट पर तरीकों बुला रहा था: तो ऐसा लगता है कि अगर signalR नहीं मिला है कुछ भी OnDisconnected या OnConnected भीतर कार्य के लिए परिभाषित की तरह

$.connection.onlineHub.server.connected = function (id, date) { 
     $("#results").append("connected: " + id + " : " + date + "</br>"); 
    }; 

    $.connection.onlineHub.server.disconnected = function (id, date) { 
     $("#results").append(("connected: " + id + " : " + date + "</br>"); 
    }; 

$.connection.onlineHub.client.connected = function (id, date) { 
     $("#results").append("connected: " + id + " : " + date + "</br>"); 
    }; 

    $.connection.onlineHub.client.disconnected = function (id, date) { 
     $("#results").append(("connected: " + id + " : " + date + "</br>"); 
    }; 

होना चाहिए , तो उन्हें निकाल दिया नहीं जाता है। जो समझ में आता है।

+4

आपको डंकन के उत्तर को अच्छे के रूप में चिह्नित करना चाहिए, क्योंकि वह सही था! – billy

+1

सही उत्तर @ डंकन है, क्योंकि उसने इसे आधे घंटे पहले पोस्ट किया था! –

+3

हां, 3+ वर्षीय प्रश्न पर इस तरह के तत्काल फैशन में चिमिंग के लिए @Matei_Radu धन्यवाद। यह साइट आपके बिना कहाँ होगी !? – DavidGouge

5

यह भी पता चला है कि एक स्क्रिप्ट पर आपको हब पर घटनाओं के लिए कम से कम एक ग्राहक कॉलबैक परिभाषित करने की आवश्यकता है। इस पर सावधान रहें जब ऑनकनेक्टेड और ऑनडिस्कनेक्टेड कहा जाता है।

+0

यह भी देखें https://coderwall.com/p/5oykeq/be-careful-about-ondisconnected-when-using-signalr –

संबंधित मुद्दे