इसकी हार्ड, लगभग असंभव (सीमित एसएल डुप्लेक्स क्षमताओं का कारण)। हमने अपनी सेवा में उपयोगकर्ताओं की एक सूची लागू की है, और हमने एक संपत्ति "IsDisconnected" और LastCommunicationTime जोड़ दी है, एक बार डब्ल्यूसीएफ सेवा को टाइमआउट मिल जाता है जब उपयोगकर्ता के आउटगोइंग-संदेश-क्यू में संदेश जोड़ने का प्रयास करता है, और विफल रहता है, और अपवाद फेंकता है टाइमआउट का। हम "IsDisconnecte = true" को चिह्नित करते हैं और अगली बार उस उपयोगकर्ता को संदेश भेजने का प्रयास नहीं करते हैं।
एक और थ्रेड उस पर ध्यान रखता है और यदि यह ध्यान देता है कि अंतिम कॉम्यूनिकेशनटाइम समय के मूल्य से अधिक हो गया है और IsDisconnected = true है, तो यह उपयोगकर्ता को सूची से हटा देता है, जब तक कि वही उपयोगकर्ता इस समय के भीतर फिर से कनेक्ट करने का प्रयास नहीं करता अवधि (जिसे हम अपने उपयोगकर्ता आईडी द्वारा पहचानते हैं)।
इस समस्या को संभालने के लिए हमने मैन्युअल रूप से बहुत सी चीजें की हैं क्योंकि यह डब्ल्यूसीएफ सेवा को इतना व्यस्त बना रहा था।
स्रोत
2010-11-10 20:27:24
क्या कॉलबैक विधियां "वनवे" हैं? ऑपरेशन कंट्रैक्ट विशेषता पर गलत करने के लिए IsOneWay सेट करना सर्वर को टाइमआउट का पता लगाएगा? (जवाब देने पर टिप्पणी नहीं कर रहा है, क्योंकि मुझे यकीन नहीं है) –