2017-12-21 16 views
0

私はこのイベントエミッタを使用するために1つのモジュールを別のモジュールに要求する方法はありますか?

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!') 

などの特急サーバーのファイルを持っていると私は通知するように両方のモジュールでイベントエミッタを使用したいtcpserverの

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); 

のための別のポートを実行するためのファイルを持っていますサーバーの一方が他方に変更されます。しかし、私が直面している問題は、他のモジュールを必要とし、循環依存を作成しないイベントを発行することです。私はこの問題にどのようにアプローチすべきですか?循環依存性に問題があるか、node.jsサーバーで使用できますか?

目的を達成するために循環依存性を回避することができますか?

+0

慎重に実行された場合は、円depを使用できます。しかし、2つのサーバー間で単一のイベント・エミッターとして機能する第3のモジュールを作成することを検討してください。 –

+0

「慎重に実行すれば」 これについて詳しく説明できますか? –

+0

私はドキュメントが私よりはるかに優れていると思います:) https://nodejs.org/api/modules.html#modules_cycles –

答えて

1

Node.JSには循環依存関係を処理するいくつかの方法がありますが、動的要求は通常は悪い考えです。予測できない状況が多数発生する可能性があります。必要なすべてのモジュールを必要とし、エミッタで使用するだけです。

関連する問題