2017-12-21 3 views
0

Ich habe einen Express-Server-Datei wie dieseWie benötigt man ein Modul in der anderen für die Verwendung von Ereignisemittern?

const express = require('express') 
const app = express() 

app.get('/', (req, res) => res.send('Hello World!')) 

app.listen(3000,() => console.log('Example app listening on port 3000!') 

Und ich habe eine Datei für einen anderen Port für einen

tcpserver laufen
const net = require('net'); 
const lora_packet = require('lora-packet'); 
const dataParser = require('./dataParser'); 

const clients = []; 


net.createServer(function(socket) { 
    socket.name = socket.remoteAddress + ":" + socket.remotePort; 
    clients.push(socket); 


    socket.on('data', function(data) { 
     try { 
      console.log("Buffer sent by terminal : "); 

     }catch(err){ 
      console.log("DATA RECEIVING PRODUCED AN ERROR" + err); 
     } 

    }); 
    socket.on('end', function() { 
     clients.splice(clients.indexOf(socket), 1); 
     //broadcast(socket.name + "has left the cartel.\n"); 
    }); 

    socket.on('error', function (exc) { 
     console.log("ignoring exception: " + exc); 
    }); 



}).listen(8080); 

I Ereignis-Emitter in beiden Module verwenden möchten die benachrichtigen Änderungen in einem der Server auf den anderen. Aber das Problem, dem ich gegenüberstehe, ist, dass ich ein anderes Ereignis ausgeben muss, um ein Ereignis auszulösen, und würde es keine zirkuläre Abhängigkeit erzeugen? Wie soll ich dieses Problem angehen? Ist die zirkuläre Abhängigkeit problematisch oder kann sie in Ihren node.js-Servern verwendet werden?

Kann es eine Arbeit um die zirkuläre Abhängigkeit geben, um das Ziel zu erreichen oder nicht?

+0

Wenn Sie vorsichtig vorgehen, können Sie zirkuläre dep verwenden. Aber denken Sie darüber nach, ein drittes Modul zu erstellen, das als einzelner Ereignissender zwischen Ihren 2 Servern fungiert. –

+0

"Wenn sorgfältig gemacht" Können Sie dies näher ausführen? –

+0

Ich glaube, die Dokumente werden viel besser als ich :) https://nodejs.org/api/modules.html#modules_cycles –

Antwort

1

Während Node.JS mehrere Möglichkeiten zum Umgang mit zirkulären Abhängigkeiten bietet, sind dynamische Anforderungen in der Regel eine schlechte Idee - sie können viele unvorhersehbare Situationen erzeugen. Es ist am besten, alle benötigten Module zu benötigen und sie dann nur in Emittern zu verwenden.

Verwandte Themen