2016-05-20 8 views
6

मैं एक्शनकेबल का उपयोग कर रहा हूं और प्रत्येक 3 सेकंड अंतराल (एक्शनकेबल लाइब्रेरी में उल्लिखित) के बाद सर्वर से पिंग प्राप्त कर रहा हूं। मेरा सवाल है: सदस्यता के समय मैं पिंग अंतराल कैसे बदल सकता हूं?एक्शन केबल रेल में पिंग अंतराल को कैसे बदलें

कोई विचार?

उत्तर

2

दिलचस्प बात यह है कि रेल 5.0.0.rc1 के रूप में ऐसा लगता है कि आप पिंग अंतराल कॉन्फ़िगर नहीं कर सकते हैं। इसे ActionCable::Server::Connections module में स्थिर के रूप में परिभाषित किया गया है।

आप शायद सर्वर अलग अंतराल में पिंग्स भेजने बनाने के लिए एक प्रारंभकर्ता में यह लगातार को फिर से परिभाषित कर सकता है लेकिन यह अभी भी अंत में आपकी मदद नहीं करेंगे, क्योंकि ग्राहक कोड है कि पिंग्स प्राप्त करता है यह भी एक स्थिर परिभाषित टाइमआउट है (सेट 6 सेकंड के लिए, यानी सर्वर से दो पिंग्स चूक गए)। जब यह सर्वर से पिंग के बिना 6 सेकंड टाइमआउट तक पहुंच जाता है, तो यह फिर से कनेक्ट करने का प्रयास करता है। और मुझे यकीन नहीं है कि आप this constant in the Javascript client code को ओवरराइड करने में सक्षम होंगे।

this github issue से निर्णय लेने से कुछ उपयोगी बहस होती है जो पिंग्स व्यवहार को और अधिक उपयोगी बनाने के लिए संभव तरीकों के बारे में चल रही है, उदाहरण के लिए नेटवर्क विलंबता को ध्यान में रखते हुए।

लेकिन संक्षेप में, अंतराल इस समय कॉन्फ़िगर करने योग्य नहीं है और जब तक कि आप 3 सेकंड से कम पिंग अंतराल नहीं चाहते हैं, तो अब मुझे रेल में इसे ओवरराइड करने का कोई आसान तरीका नहीं दिख सकता है।

6

@ BoraMa के जवाब पर विस्तार:

आप इस तरह बैकएंड तरफ लगातार ओवरराइड कर सकते हैं:

# config/initializers/action_cable.rb 
module ActionCable 
    module Server 
    module Connections 
     BEAT_INTERVAL = 5 
    end 
    end 
end 

ग्राहक पक्ष पर, आप भी मान को ओवरराइड करने की जरूरत है:

// this should be after //= require action_cable 
// but before any App.cable.subscriptions.create call 
// the value here *must* be 2 times the backend's value 
ActionCable.ConnectionMonitor.staleThreshold = 10; 

कृपया ध्यान दें कि यह दृष्टिकोण आम तौर पर वास्तव में एक बुरा विचार है: आंतरिक चर के साथ गड़बड़ करना बग और मुद्दों के प्रत्यक्ष तरीकों में से एक है।

वास्तव में, गहरे लाल रंग का भी आपको चेतावनी देगा: इस केवल यदि आप जानते हैं कि तुम क्या कर रहे हो

config/initializers/action_cable.rb:7: warning: already initialized constant ActionCable::Server::Connections::BEAT_INTERVAL 

का प्रयोग करें।

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