2011-11-29 19 views
15

क्या सिग्नलआर में मतदान सर्वर को रोकने का कोई तरीका है? त्रुटि होने पर मैं मतदान सर्वर को रोकना चाहता हूं। मतदान केंद्र $.connection.hub.start() के साथ शुरू किया गया है, इसलिए मुझे लगता है कि इसे $.connection.hub.stop() या उसके जैसा कुछ बंद कर दिया जा सकता है। लेकिन यह काम नहीं कर रहा है, stop() पर कॉल करने के बाद भी मतदान जारी है। मतदान रोकने के लिए कोई और तरीका है?सिग्नलआर में मतदान रोकने के लिए कैसे?

<script type="text/javascript"> 

var chatHub = $.connection.chatHub; 
var connection = $.connection.hub; 

chatHub.addMessage = function (message) { 
     $('#messages').append('<li>' + message + '</li>'); 
    }; 

connection.error(function (error) { 
$('#messages').append('<li>' + "error connecting: closing connnection" + '</li>'); 
    connection.stop(); //This doesn't seem to work 
     }); 

connection.start(); 

</script> 

उत्तर

37

हैं: हैंडलर समारोह में एक अपवाद है, जो कारण है कि चुनाव इसे पुनः शुरू नहीं कर रहा है फेंक आप केन्द्रों का उपयोग कर रहे आप हब के कनेक्शन बंद कर सकते हैं:

$.connection.hub.stop(); 
+0

कि वाक्य रचना $ .connection.hub.connection.stop (करने के लिए बदल गया है)? यह सब मेरे लिए काम करता है। – dove

+0

नहीं, यह नहीं है। यह – davidfowl

+0

नहीं बदला है, मेरा मिश्रण अपनाने के लिए खेद है, अब मेरे समय को बर्बाद करने के लिए खेद है, अब मेरे लिए एक विशेष हब, $ .connection.myHub.stop(), और ऊपर कनेक्शन को रोकने के बीच अंतर पर पढ़ने का समय है। एक विचार है कि मुझे लगता है कि मैं एक सैंडबॉक्स स्थापित करूंगा, इसलिए मुझे पता है। – dove

2

सबसे पहले आप सुनिश्चित हैं कि यह आवश्यक है? यदि संचार त्रुटि स्पष्ट रूप से होती है तो आप इसे पुनः प्रयास करना चाहते हैं।

हालांकि, मैंने स्रोत कोड में देखा और मेरा मतलब है कि विशेष रूप से त्रुटि हैंडलर में यह संभव नहीं है .stop() कमांड। सम्मानपूर्वक इसका कोई प्रभाव नहीं पड़ता क्योंकि संचार से हैंडलर फ़ंक्शन समाप्त होने के बाद दो सेकंड बाद स्वचालित रूप से पुन: प्रारंभ किया जाता है।

देखें jquery.signalR.js (लाइन 340):

$(instance).trigger("onError", [data]); 

window.setTimeout(function() { 
    poll(instance); 
}, 2 * 1000); 

मैंने पाया एक वैकल्पिक हल:

connection.error(function (error) { //$.connection.hub.error() 
    $('#messages').append('<li>' + "error connecting: closing connnection" + '</li>'); 
    throw "Close SignalR connection"; 
}); 
संबंधित मुद्दे