मैं वर्तमान में क्लाइंट-साइड जावास्क्रिप्ट फ़ाइल और एक नोड.जेएस सर्वर फ़ाइल के बीच घटनाओं को उत्सर्जित करने और सुनने के लिए socket.io
का उपयोग कर रहा हूं, लेकिन मैं नोड सर्वर और उसके मॉड्यूल के बीच ईवेंट को उत्सर्जित और सुनना चाहता हूं । मेरे बारे में सोचा है कि यह कुछ इस तरह दिखाई देगी:मैं Node.js के साथ जावास्क्रिप्ट मॉड्यूल फ़ाइलों के बीच इवेंट हैंडलर का उपयोग कैसे करूं?
नोड सर्वर:
var module1 = require('./module1');
//Some code to launch and run the server
module1.emit('eventToModule');
module1.emit('moduleResponse', function(moduleVariable) {
//server action based on module response
}
मॉड्यूल फ़ाइल:
var server = require('./server.js');
server.on('eventToModule', function() {
//module response to server request
}
server.emit('moduleResponse', moduleVariable);
यह स्पष्ट रूप से एक सरलीकृत संस्करण है, लेकिन मुझे लगता है कि होता है कि इस कार्यशीलता होना चाहिए उपलब्ध। क्या मुझे मॉड्यूल फ़ाइल को दूसरे सर्वर के रूप में स्थापित करने की आवश्यकता है? यदि हां, तो यह कैसा दिखता है?
मैं भी server
की var socket = io.connect('http://localhost:3000');
उपयोग करने की कोशिश (इस कोड मैं ग्राहक नोड सर्वर से कनेक्ट करने की अनुमति के लिए इस्तेमाल करते हैं) के बजाय और था module1
पर सुनने और socket
को फेंकना लेकिन है कि या तो काम नहीं किया।
दूसरा प्रयास (अभी भी काम नहीं):
server.js
//other requirements
var module1 = require('./module');
const EventEmitter = require('events');
var emitter = new EventEmitter();
io.on('connection', function(client) {
client.on('emitterTester', function() {
emitter.emit('toModule');
emitter.on('toServer', function() {
console.log("Emitter successful.");
});
});
});
module.exports = emitter;
module.js
var server1 = require('./server');
const EventEmitter = require('events');
var emitter = new EventEmitter();
emitter.on('toModule', function() {
console.log("Emitter heard by module.");
emitter.emit('toServer');
});
module.exports = emitter;
इसके अलावा, जब मैं server1.on
इस्तेमाल करने की कोशिश, मैं संदेश मिलता है server1.on is not a function
।
प्रतिक्रिया के लिए धन्यवाद, लेकिन यह अभी भी मेरे लिए काम नहीं कर रहा है। मैंने दूसरी पोस्ट को दिखाने के लिए मूल पोस्ट संपादित किया। वैसे, मुझे पता है कि मैं इसे विधियों को आयात करके और सर्वर फ़ाइल में उनका उपयोग करके इसे सेट कर सकता हूं। मैं सर्वर फ़ाइल के थोक पर कटौती करने के लिए घटनाओं के माध्यम से ऐसा करना पसंद करता हूं। धन्यवाद। – SuperCodeBrah
@SuperCodeBrah - आप पर्याप्त कोड नहीं दिखाते हैं (हमें server.js में 'module.exports' को देखने की आवश्यकता है), लेकिन ऐसा लगता है कि आप server.js से EventEmitter निर्यात नहीं कर रहे हैं और फिर उस विशेष घटना का उपयोग कर मॉड्यूल में उदाहरण उदाहरण .js। कृपया देखें कि मेरा कोड उदाहरण कैसा है। – jfriend00
हाँ, मुझे पहले संपादन में याद आया। यह अभी होना चाहिए। साथ ही, घटनाएं सर्वर और मॉड्यूल के बीच दोनों दिशाओं में जा रही हैं, इसलिए मुझे लगता है कि जो भी मेरे पास मॉड्यूल में है, मुझे सर्वर में और इसके विपरीत की आवश्यकता होगी। – SuperCodeBrah