एक ठेठ Redis चैट उदाहरण कुछ इस तरह जाना होगा पर Redis दूर करने के लिए कैसे (बस एक उदाहरण के लिए https://github.com/emrahayanoglu/Socket.io-Redis-RealTime-Chat-Example/blob/master/chatServer.js देखें):'संदेश' श्रोताओं
io.sockets.on('connection', function (client) { //websocket connection
redis1.subscribe("chat");
redis1.on("message", function(channel, message) {
console.log(message);
client.send(message);
});
client.on('message', function(msg) {
redis2.publish("chat",msg.message);
});
client.on('disconnect', function() {
redis1.quit();
});
});
हालांकि, यहां मुद्दा यह है कि जब कोई client
' डिस्कनेक्ट ', redis1.on('message',FUNC(){})
श्रोता अभी भी जुड़ा हुआ है। कंसोल message
प्रिंट करना जारी रखेगा। यदि कोई redis1
की ईवेंट श्रोता का निरीक्षण करना चाहता था, तो उन्हें अभी भी अनाम कार्य सुनना होगा।
मुद्दा यह है कि redis1.off(...)
फ़ंक्शन नहीं है। तो, रेडिस संदेश श्रोता को अनइंड/सदस्यता समाप्त/हटाएं/हटाएं कैसे?
नोट: कोई केवल redis1.end() नहीं कर सकता है, क्योंकि इससे अन्य वेबसाइकिल जुड़े उपयोगकर्ताओं के लिए रेडिस कनेक्शन तोड़ दिया जाएगा।
redis ग्राहक है एक [EventEmitter] (http://nodejs.org/api/events.html#events_class_events_eventemitter) है, जो एक 'on' विधि है जो सिर्फ है 'addListener' के लिए उपनाम, और 'removeListener', जो कि इसके विपरीत है। तो आप अभी भी 'removeListener' का उपयोग करते हुए' on' का उपयोग जारी रख सकते हैं। –
मेरे जैसे किसी भी व्यक्ति के लिए जो इसे स्किम किया गया और बिंदु को याद किया: निकालने वाला लिस्टर वास्तव में फ़ंक्शन को हटा रहा है, न केवल उस बाध्यकारी को साफ़ कर रहा है .. आईई। 'हटाएं लिस्टनर (' संदेश ', कॉलबैक)' संदेश 'बाध्यकारी से' कॉलबैक 'फ़ंक्शन को हटा रहा है। मतलब यह है कि यदि आप एक अज्ञात फ़ंक्शन 'redis1.addListener (' message ', function (c, m) {..}' का उपयोग कर रहे हैं, तो आपके पास श्रोता को हटाने का कोई तरीका नहीं है और रेडिस मृत सॉकेट – TheRightChoyce
पर प्रकाशित करना जारी रखेगा @ Thechoyce आपकी टिप्पणी मुझे जवाब से अधिक जानकारी देता है! – laike9m