2

Node.js は初めてです。これら 2 つのコードの違いを知りたい:

var http = require("http");

http.createServer(function(request,response) {
    request.addListener("end", function(){
        console.log(request);
    });

}).listen(8888);

var http = require("http");

http.createServer(function(request,response) {

    console.log(request);

}).listen(8888);

つまり、endサーバーがデータの受信を終了するたびにイベントがトリガーされるのに、わざわざそれを使用する必要はありません。初心者の質問です。

4

3 に答える 3

2

console.log(...) は着信リクエストがあるたびに実行されるため、2 番目のコードはおそらく期待どおりには動作しません。しかし、リクエストがすでに完了した (つまり、サーバーに完全に送信された) かどうかを知る方法はありません。
最初のコードは、接続が閉じられてリクエストが終了するたびに (つまり、誰かがデータをリクエストするたびに) console.log(...) を実行します。その後、送信されたデータを使用できます。したがって、おそらく使用したい (通常はリクエストを処理するときに使用する) のは、最初のコードです。

于 2013-08-23T12:58:05.467 に答える
2

私は NodeJS の専門家ではありませんが、以下はドキュメントから論理的に流れます。

大きなファイルをアップロードするリクエストを考えてみましょう。渡したコールバックcreateServerは、リクエストが最初にサーバーに到着したときに呼び出されます。オブジェクトのendイベントrequest(から継承ReadableStream) は、リクエストが完全に送信されると発生します。それらはかなり異なる時間になります。

于 2013-08-23T09:10:10.453 に答える
1

このサーバーにデータを送信している場合は、そのデータを取得するためにその request.listener を使用する必要があることを意味します。

 var http = require("http");

 http.createServer(function(req,response) { 

 req.on('data', function (chunk) {

      body += chunk;

  });

  req.on('end', function () {

      console.log('POSTed: ' + querystring.parse(body).urDataName);

      var data=querystring.parse(body).urData;//here u can get the incoming data

     });

 }).listen(8888);
于 2013-08-23T09:21:53.597 に答える