में अलग app से मॉड्यूल सुई मैं दो नोड क्षुधा/सेवाओं है कि एक साथ चल रहे हैं, 1. मुख्य एप्लिकेशन 2. दूसरा एप्लिकेशन हैकैसे Node.js
मुख्य एप्लिकेशन को सभी को दिखाने के लिए जिम्मेदार है अंत में अलग-अलग ऐप्स से डेटा। अब मैं मुख्य ऐप में दूसरे ऐप का कुछ कोड डालता हूं और अब यह काम कर रहा है, लेकिन मैं इसे डीकॉप्लेड करना चाहता हूं। मेरा मतलब है कि सेकनोड ऐप का कोड मुख्य ऐप में नहीं होगा (किसी भी तरह से इसे रनटाइम पर इंजेक्ट करने के लिए)
दूसरी सेवा की तरह मुख्य ऐप में इसके कोड को इंजेक्ट करने के लिए पंजीकृत किया गया है। इसका कोड केवल दो मॉड्यूल है, क्या यह नोडजेज़ में करना संभव है?
const Socket = require('socket.io-client');
const client = require("./config.json");
module.exports = (serviceRegistry, wsSocket) =>{
var ws = null;
var consumer =() => {
var registration = serviceRegistry.get("tweets");
console.log("Service: " + registration);
//Check if service is online
if (registration === null) {
if (ws != null) {
ws.close();
ws = null;
console.log("Closed websocket");
}
return
}
var clientName = `ws://localhost:${registration.port}/`
if (client.hosted) {
clientName = `ws://${client.client}/`;
}
//Create a websocket to communicate with the client
if (ws == null) {
console.log("Created");
ws = Socket(clientName, {
reconnect: false
});
ws.on('connect',() => {
console.log("second service is connected");
});
ws.on('tweet', function (data) {
wsSocket.emit('tweet', data);
});
ws.on('disconnect',() => {
console.log("Disconnected from blog-twitter")
});
ws.on('error', (err) => {
console.log("Error connecting socket: " + err);
});
}
}
//Check service availability
setInterval(consumer, 20 * 1000);
}
मुख्य मॉड्यूल मैं इस कोड डाल में और मैं द्वारा यह दसगुणा क्रम पर किसी भी तरह यह इंजेक्षन करना चाहते हैं? उदाहरण बहुत उपयोगी होगा ...
क्यों मॉड्यूल के रूप में अपने दूसरे ऐप निर्यात नहीं, तो यू अपने मुख्य अनुप्रयोग में आयात कर सकते हैं। – Xlee
_ "किसी भी तरह से इसे रनटाइम पर इंजेक्ट करने के लिए" _। इसे 'आवश्यकता() 'कहा जाता है। – robertklep
क्या आप इसे पाने के अपने कारणों को स्पष्ट कर सकते हैं? जैसा कि कुछ उत्तरों में वर्णित है decoupling इसे पूरा करने का तरीका है। जब तक आप ऐसा करने के लिए एक मजबूत कारण नहीं रखते हैं, तो मैं कहूंगा कि आप कुछ डिकूप्लेड - माइक्रो-सर्विसेज, पब/सब, जॉब कतार या यहां तक कि एक संवाददाता द्वारा खपत के लिए डेटा लॉगिंग करने से बेहतर हैं। – Brian