2015-04-01 7 views
11

के साथ जीवित (जुड़ा हुआ) है, मैं कई नोड्स, सॉकेट.ओ-रेडिस और nginx के साथ socket.io का उपयोग कर रहा हूं। http://socket.io/docs/using-multiple-nodes/सॉकेट की जांच कैसे करें सॉकेट.io में कई नोड्स और सॉकेट.ओ-रेडिस

मुझे क्या करना कोशिश कर रहा हूँ: मैं इस गाइड का पालन करें एक समारोह (सर्वर साइट) में, मैं socketid द्वारा क्वेरी है कि इस सॉकेट से जुड़ा हुआ है या डिस्कनेक्ट

मैं io.of('namespace').connected[socketid] की कोशिश की करना चाहते हैं, यह केवल वर्तमान के लिए काम प्रक्रिया (इसका मतलब है कि यह केवल वर्तमान प्रक्रिया की जांच कर सकता है)।

कोई भी मेरी मदद कर सकता है? अग्रिम के लिए धन्यवाद।

उत्तर

5

मैं कैसे जांच कर सकते हैं सॉकेट socketid साथ जिंदा (जुड़े) है मैं [socketid], यह केवल मौजूदा प्रक्रिया के लिए काम namespace.connected की कोशिश की।

जैसा कि आपने कहा था, अलग प्रक्रिया का मतलब है कि सॉकेट केवल उस प्रक्रिया पर पंजीकृत होते हैं, जिसे उन्होंने पहले कनेक्ट किया था। आपको socket.io-redis से अपने सभी नोड्स को एक साथ कनेक्ट करने की आवश्यकता है, और आप क्या कर सकते हैं प्रत्येक बार क्लाइंट कनेक्ट/डिस्कनेक्ट होने पर प्रत्येक ईवेंट प्रसारित करता है, ताकि प्रत्येक नोड में सभी क्लाइंट की एक वास्तविक रीयल-टाइम सूची हो।

+0

हाय, मेरा मतलब है कि मैं सॉकेट को सॉकेट से कनेक्ट करना चाहता हूं या नहीं चाहता हूं। इसका मतलब यह नहीं है कि चेक सॉकेट जुड़ा हुआ है या नहीं। आपका दृष्टिकोण 2 समस्या का समाधान नहीं कर सकता: 1. मेरे पास सॉकेटिड है, मैं जांचना चाहता हूं कि सॉकेट जुड़ा हुआ है या नहीं? 2. ईवेंट कनेक्ट और डिस्कनेक्ट असीमित रूप से आग लग जाएगा। हो सकता है कि वास्तव में यह पहले कनेक्ट हो और बाद में डिस्कनेक्ट हो, लेकिन सर्वर पर, कई कारणों से डिस्कनेक्ट ईवेंट पहले आग लगती है और बाद में कनेक्ट होती है। तो वास्तव में यह डिस्कनेक्ट है लेकिन सर्वर स्टोर पर यह –

+0

से जुड़ा हुआ है कृपया अपनी टिप्पणी अपडेट करें क्योंकि मैं वास्तव में समझ नहीं पा रहा हूं कि आप क्या करने की कोशिश कर रहे हैं। प्रत्येक नोड ** में ** सभी सॉकेट आईडी नहीं होनी चाहिए, लेकिन यह ठीक है अगर ** एक नोड ** सॉकेट के साथ सभी नोड्स से पूछता है यह देखने के लिए कि यह वहां है या नहीं। यदि आप वास्तव में सॉकेटिड द्वारा पूछना चाहते हैं तो बस अपने नोड्स के बीच संचार की एक परत जोड़ें। –

+0

मैं ऐसा करने की कोशिश कर रहा हूं: 1 नोड पर एक फ़ंक्शन पर, मैं सॉकेटिड द्वारा क्वेरी करना चाहता हूं कि यह सॉकेट कनेक्ट या डिस्कनेक्ट हो। नोड्स के बीच संचार की एक परत बनाने के लिए आसान नहीं है जिस तरह से सभी नोड्स को संदेश भेजा गया है और सॉकेट की जांच करने के लिए वापसी मूल्य प्राप्त करना या डिस्कनेक्ट करना आसान है। आप http://socket.io/docs/rooms-and-namespaces/#sending-messages-from-the-outside-world –

2

बाहर चेक here

के रूप में उल्लेख ऊपर आप socket.io-redis का उपयोग करना चाहिए यह कई नोड्स पर काम पाने के लिए।

var io = require('socket.io')(3000); 
var redis = require('socket.io-redis'); 
io.adapter(redis({ host: 'localhost', port: 6379 })); 
+0

मैं इसका उपयोग कर रहा हूं (सॉकेट.ओ-रेडिस), मुझे लगता है कि आप मेरे प्रश्न को नहीं समझते हैं। मैं ऐसा करने की कोशिश कर रहा हूं: 1 नोड (सर्वर साइड) पर एक फ़ंक्शन पर, मैं सॉकेटिड द्वारा क्वेरी करना चाहता हूं कि यह सॉकेट कनेक्ट हो गया है या –

+0

डिस्कनेक्ट हो गया है सब ठीक है। socket.io डिफ़ॉल्ट रूप से सत्र का उपयोग कर रहा है जिसे एकाधिक ऐप उदाहरणों को फेंक नहीं दिया जाता है। साझा मेमोरी चाल (रेडिस, मोंगोडब, कोई स्टोरेज ...) करेगी। socket.io-redis जो रेडिस के साथ बातचीत करने के लिए एकमात्र इंटरफ़ेस है। सुनिश्चित करें कि आपने वही उपसर्ग कॉन्फ़िगर किया है। इसे स्थानीय रूप से देखने और परीक्षण करने के लिए किसी भी रेडिस जीयूआई को आज़माएं (आप सीधे रीडिस स्टोरेज से सॉकेट आईडी द्वारा कोई भी जानकारी प्राप्त कर सकते हैं) –

+0

यदि सही है, तो आप मुझे स्निपेट कोड दे सकते हैं। लंबे समय तक कोशिश की लेकिन सफलता नहीं –

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