2010-04-29 8 views
9

मैं node.js में addListener के उद्देश्य को समझने की कोशिश कर रहा हूं। क्या कोई कृपया समझा सकता है? धन्यवाद! एक साधारण उदाहरण होगा:addListener node.js में क्या करता है?

var tcp = require('tcp'); 
var server = tcp.createServer(function (socket) { 
    socket.setEncoding("utf8"); 
    socket.addListener("connect", function() { 
    socket.write("hello\r\n"); 
    }); 
    socket.addListener("data", function (data) { 
    socket.write(data); 
    }); 
    socket.addListener("end", function() { 
    socket.write("goodbye\r\n"); 
    socket.end(); 
    }); 
}); 
server.listen(7000, "localhost"); 

उत्तर

8

कारण तथ्य यह है कि Node.js घटना पर ही आधारित काम करता है और एक घटना पाश कार्यान्वित करता है, पंजीकरण के श्रोताओं आप कॉलबैक है कि हर बार घटना के सक्रिय होने पर निष्पादित किया जाएगा परिभाषित करने के लिए अनुमति देने के लिए। इस प्रकार, यह async का एक रूप भी है। कोड संरचना।

यह जीयूआई श्रोता के साथ तुलनीय है, जो कि उपयोगकर्ता बातचीत पर आग लगती है। माउस क्लिक की तरह, जो आपके जीयूआई ऐप में कोड को निष्पादित करता है, आपके उदाहरण में आपके श्रोताओं को जैसे ही घटना होती है, जैसे ही एक नया क्लाइंट सॉकेट से जुड़ता है।

+0

ठीक है तो 'कनेक्ट', 'डेटा' या 'अंत' इस कार्यक्रम का नाम होगा। लेकिन इन घटनाओं के नाम कहां और कौन परिभाषित करते हैं? – Jeff

+0

'घटना-लूपिंग' वास्तव में क्या है? – Jeff

+1

यह इवेंट उत्सर्जन के स्रोत पर निर्भर करता है। इसलिए कक्षा EventEmitter कक्षा मौजूद है। इवेंटइमीटर जैसे उपलब्ध ऑब्जेक्ट्स के लिए, आपके (सर्वर-) सॉकेट की तरह, ईवेंट नाम ढूंढने के लिए प्रलेखन में एक नज़र डालें। –

1

यह एक "घटना" के लिए श्रोता पंजीकृत करता है। घटनाओं को तारों द्वारा पहचाना जाता है, जैसे कि "connect" और "data"। दूसरा तर्क एक समारोह है, जिसे "कॉलबैक" कहा जाता है, जिसे "ईवेंट हैंडलर" के रूप में भी प्रस्तुत किया जाता है। जब भी ऑब्जेक्ट के भीतर एक विशिष्ट घटना होती है तो श्रोताओं को पंजीकृत किया जाता है, सभी हैंडलर आवेदक होते हैं।

node.js इसका उपयोग करता है, क्योंकि यह एक एसिंक्रोनस निष्पादन मॉडल को नियोजित करता है, जिसे किसी ईवेंट-संचालित दृष्टिकोण के साथ सबसे अच्छा तरीके से संभाला जा सकता है।

greetz
back2dos

+0

मैं कॉलबैक \ async भाग को समझता हूं। यह प्रकाशक/ग्राहक की तरह है, इसलिए एक कार्यक्रम ट्रिगर हो जाता है और ईवेंट ग्राहक (कॉलबैक) को एसिंक्रोनस (गैर अवरुद्ध फैशन में) निष्पादित किया जाता है। लेकिन मैं बस ट्रिगरिंग बिट के आसपास अपना सिर नहीं मिल सका। कैसे कहते हैं "कनेक्ट" किसके द्वारा ट्रिगर किया जाता है? – Jeff

+0

मुझे लगता है कि मुझे EventEmitter अनुभाग पर पढ़ने की आवश्यकता है। – Jeff

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