サーバーとクライアントを使用して Web アプリを作成しているとします。
- サーバーはAPI として機能し、expressフレームワークを使用します。
- クライアントは、
node-static
静的な javascript/html ファイルを提供する単なるアプリです。
それらを個別に、互いに独立して、または同時に両方を展開できるようにしたいと考えています。
ディレクトリ構造をどのように想定するかを次に示します。
/my-app
app.js
/server
server.js
/client
client.js
これを3つの異なる方法で実行できるようにしたいと思います。
一部のポート (3000 など) でサーバー (API) のみを実行します。
my-app/server> node server.js ...Server listening on localhost:3000/api
クライアントのみを実行します (つまり、/client ディレクトリから静的ファイルを提供します):
my-app/client> node client.js ...Server listening on localhost:4000/client
サーバーとクライアントの両方を同じポートで (単一の node.js インスタンスで) 実行します。
my-app> node app.js ...Server listening on localhost:5000
これはノードで可能ですか?それを構成する適切な方法は何ですか?
私は次のように始めました:
/////////////
// server.js
/////////////
// Run the server if this file is run as script
if(module.parent){
app.listen("3000/client")
}
/////////////
// client.js
/////////////
var static = require('node-static');
var file = new(static.Server)('.');
var app = require('http').createServer(function (request, response) {
request.addListener('end', function () {
file.serve(request, response);
});
});
if(module.parent){
app.listen("4000/client");
}
/////////////
// app.js
/////////////
server = require("server/server.js")
server.app.listen("5000/api")
client = require("client/client.js")
client.app.listen("5000/client") <--- ?????
app.js内でクライアントとサーバーの両方を接続して、両方が同じポート/プロセス/スレッドなどから提供されるようにする方法がわかりません...
注: 申し訳ありませんが、コードはテストされておらず、おそらく正しくありません。私はnode.jsが初めてです
ヒントをいただければ幸いです。