2017-10-02 1 views
1

サーバー:Node.jsがClientにServer入力を送信します。メモリリークに関する警告。私の間違いは何ですか?そして、node.jsはどのようにコードを実行しますか?

var net = require('net'); 
var stdin = process.openStdin(); 

var client_list = []; 

var server = net.createServer(function(connection) { 
    //console.log('client connected'); 

    connection.on('error', function(e){ 
     if(e.code == 'ECONNRESET'){ 
     console.log('Client dissconeccted'); 
     } 
    }); 
    //connection.write('Hello World!\r\n'); 
    stdin.addListener("data", function(d) { 
    // note: d is an object, and when converted to a string it will 
    // end with a linefeed. so we (rather crudely) account for that 
    // with toString() and then trim() 

    console.log("you entered: [" + d.toString().trim() + "]"); 
     connection.write(d.toString().trim()); 
    }); 
    connection.pipe(connection); 

}); 
server.listen(9999, function() { 
    console.log('server is listening'); 
}); 

クライアント:(?):

"Possible EventEmitter memory leak detected. 11 data listeners added. Use emitter.setMaxListeners() to increase limit".

なぜ

var net = require('net'); 
var HOST = 'localhost'; 
var PORT = 9999; 
//var client = new net.Socket(); 

    var client = net.connect(PORT, HOST, function(){ 
     console.log('connected to server! ' + HOST + ':' + PORT); 
     //client.write('I am Superman'); 
    }); 

    client.on('data', function(data) { 
     var data = data.toString(); 
     console.log(data); 

     //If data starts with JS add injection functionallity 
     if (data === "END"){ 
      client.end(); 
      console.log("ENDING!") 
     } 
     else if (data === "poo"){ 
      console.log("HOLY SHIT!") 
     } 
    }); 

    //Keep trying to connect! 
    client.on('error', function(e) { 
     console.log('Parent connection error'); 
     //client.end(); 
     client.connect(PORT, HOST); 
    }); 

    client.on('end', function() { 
     console.log('disconnected from server'); 
    }); 

/*var client = net.connect({port: 8080}, function() { 
    console.log('connected to server!'); 
});*/ 

だから何が起こるかは、それは追加のリスナーを保持し、メッセージで11人のリスナーで私に警告しているということですこれは?私はstdin.addListener()を動かすことでこれを修正しようとしましたが、入力を全く受けないか、問題が解決しません。私は何かの上にいるのですか?そして、コードはどのようにノードで実行されますか、それはループですか?

ありがとうございます!

答えて

0

クライアントスクリプトとサーバースクリプトの両方を実行してください。私はあなたが得ているエラーメッセージを再現することができません。私はUbuntuでコードを実行しています - nodejs 6.9.5、npm 5.4.2。 package.jsonファイルの内容を投稿できますか?

更新:オンラインで見たことがあります。 Nodeの既知の古いバグのようだ。 https://github.com/nodejs/node-v0.x-archive/issues/5108

+0

{ "名前": "TCP"、 "バージョン": "1.0.0"、 "説明": "TCPクライアント/サーバ・テスト"、 "メイン": "server.js"、 "スクリプト":{ "test": "エコー\"エラー:テストが指定されていません "&& exit 1" 、 "author": "Juliet"、 "license": "ISC"、 "依存関係" :{ "net": "^ 1.0.2" } } –

関連する問題