Ich arbeite mit 3 Dateien in Nodejs. File1.js1 has a
Zähler = 11 und getter() setter()
. File2.js
setzt den Wert auf counter=10
. Aber wenn ich den Wert des Zählers in File3.js
abrufen kann ich den alten Wert 1, anstatt was von File2
gesetzt wurde.Knotenvariable wird zurückgesetzt
//=====File1.js=====
var store = module.exports = {
counter: 1,
getCounter: function() {
return store.counter;
},
setCounter: function (value) {
store.counter = value;
}
}
//=====File2.js=====
var c = require('./File1');
c.setCounter(10);
console.log(c.getCounter()) //prints 10
//=====File3.js=====
var c = require('./File1');
console.log(c.getCounter()) //prints 1
Dies scheint ein einfaches und unverändertes Konzept. Ich denke, das Problem ist hier und ich weiß nicht, wie ich es lösen soll.
Datei1 und Datei2 laufen auf Node-Service-1 (verfügbar unter http://localhost:1000) und Datei3 läuft auf Node-Service-2 (verfügbar unter http://localhost:1100).
In einem typischen Szenario greifen mehrere Benutzer auf Node-service-1 und Node-service-2 zu, und nur der erste Benutzer erhält 1000 zur Verfügung. Ich habe das portfinder
Paket verwendet, um den nächsten verfügbaren Port zu erhalten, und Node-service-1 für User2 auf 1001 ausgeführt. Node-service-2 weiß jedoch nicht, dass User2 den Dienst auf Port 1001 ausführt und versucht, 1000 falsch abzurufen (für User2) und scheitert.
Die Frage ist also, woher kennt Node-service-2 den Port, auf dem Node-service-1 läuft?
Ich glaube, für Socket-Verbindung muss ich auch den Port kennen, auf dem Node-Service-1 ausgeführt wird. Ist das korrekt ? – mehtak
Nun, Sie müssten einen Socket-Listener für eine Knoteninstanz implementieren und dann Code für die andere Instanz mit der richtigen Portnummer verbinden. Es wäre wahrscheinlich sinnvoller, die verschiedenen verfügbaren Optionen für die Kommunikation zwischen Knoteninstanzen zu untersuchen und eine vorhandene Lösung zu wählen, die Ihren Anforderungen am besten entspricht. –
Danke @Julian Goacher Ich werde es weiter untersuchen. – mehtak