2016-10-27 8 views
0

私はNode.jsを学習しています。サーバとクライアントを作成しました。.jsファイルですが、私はいくつかのことを理解していません。たとえば、webserver.jsファイルでは、pathnameの使用方法はわかりません。同様に、client.jsファイルでは、datapathは何ですか?このコードのクライアント、パス、およびデータとは何ですか?

もし私がそれの基本についてお読みにならなければならないと思うなら、できるだけ私に有用なリンクを提供してください。私は見つけようとしたが働かなかった。

webserver.js

var fs=require('fs'); 
var url=require('url'); 
var http=require('http'); 
http.createServer(function(request, response){ 
    var pathname=url.parse(request.url).pathname; 
    console.log("Pathname: "+pathname+"Request.url: "+request.url); 
    fs.readFile(pathname.substr(1), function(err, data){ 
     if(err){ 
      console.log("Error reading."); 
      response.writeHead(400, {'content-type' : 'text/html'}); 
     }else{ 
      response.writeHead(200, {'content-type' : 'text/html'}); 
      response.write(data.toString()); 
     } 
     response.end(); 
    }); 
}).listen(8081); 
console.log("Server is running."); 

client.js

var http=require('http'); 
var options={ 
    host: 'localhost', 
    port: '8081', 
    path: '/index.html' 
}; 
var callback=function(response){ 
    var body=''; 
    response.on('data', function(data){ 
     body+=data; 
    }); 
    response.on('end', function(){ 
     console.log("Data received."); 
    }); 
} 
var req=http.request(options, callback); 
req.end(); 

元のコード源泉ここにある:Code

+0

'あなたはcan'場合は私に便利なリンクを提供してください - https://nodejs.org/en/docs/ –

+0

Iそこに必要なものは見られませんでした。あなたは少し指導できますか? –

+0

[これは助けてください](https://nodejs.org/api/url.html) –

答えて

0

pathnameは、httpサーバに要求されたパスです。この質問のパス名の例は/questions/40276802/what-is-client-path-and-data-in-this-codeです。 client.jsのpathも同じです。

あなたはNode.jsのドキュメントからのパス名にURLを解析する上でドキュメントを見つけることができます:https://nodejs.org/api/http.html#http_message_url

ノードのHTTPクライアントは、いくつかのイベントを発するストリームを、使用しています。 dataはバッファで呼び出され、通常は配列に追加してから後で連結します(コードのように)。 endは、すべてのバッファが送信されたときに呼び出されます。

あなたはNode.jsのドキュメントからストリームからのイベントを処理する上でドキュメントを見つけることができます:https://nodejs.org/api/stream.html#stream_class_stream_readable

+0

cmdで 'webserver.js'ファイルを実行すると、「Servers is running」と表示されます。パス名:/index.html Request.url:/index.htmlなぜですか?その後、もし私がこのURL(127.0.0.1:8081)をブラウザーにした場合、以下は... –

+0

... cmd:パス名:/favicon.ico Request.url:/favicon.ico –

+0

の読み取りエラークライアントのパスは/index.htmlです。これがパス名としてサーバーに渡されます。 – PaulBGD

1

パス名がURLのパス部分で、それが存在する場合、最初のスラッシュを含め、ホストの後に、クエリの前に来ます。

+0

cmdでwebserver.jsファイルを実行すると、「Servers is running」と表示されます。パス名:/index.html Request.url:/index.htmlなぜですか?その後、もし私がこのURL(127.0.0.1:8081)をブラウザした場合、以下は... –

+0

... cmd:パス名:/favicon.ico Request.url:/favicon.ico Read –

+0

これを使ってくださいライン:if(err)throw err; console.log( "読み込みエラー")の代わりに。 –

0

パス名は要求されたパスです。 urlパッケージのドキュメントを確認する必要があります。npm-url

client.jsdataは、サーバーからの応答データです。 Node.jsの程度コールバックし、すべての学習のためのHTTP|Node.js

:再びhttpマニュアルを確認nodeschool.io

+0

他の2つの答えに関する私のコメントを読んでください。あなたはそれについて何とおっしゃいますか? –

+0

urlは、Node.jsの内蔵モジュールであり、外部モジュールではありません。同様に、Node.jsには既にそのドキュメントがあります。 – PaulBGD

+0

はい私は同意します。また、npmパッケージには、URL解決とパッシングのユーティリティがnode.jsとの機能パリティを持つことを目的としたユーティリティがあります。core url module_ –

関連する問題