Скажем, я пишу веб-приложение с сервером и клиентом.
- сервер функционирует как API и использует express framework.
- клиент - это просто приложение
node-static
, которое обслуживает статические файлы javascript/html.
Я хочу иметь возможность развернуть их отдельно, независимо друг от друга, или одновременно в обоих случаях.
Вот как я представляю структуру каталогов:
/my-app
app.js
/server
server.js
/client
client.js
Я хотел бы иметь возможность запускать это тремя способами:
-
Запустите сервер (API) на каком-либо порту (скажем 3000):
my-app/server> node server.js ...Server listening on localhost:3000/api
-
Запустите только клиент (т.е. выполните статические файлы из каталога/клиента):
my-app/client> node client.js ...Server listening on localhost:4000/client
-
Запустите сервер и клиент на одном и том же порту (одним экземпляром node.js):
my-app> node app.js ...Server listening on localhost:5000
Возможно ли это в node и как правильно его настроить?
Я начал следующим образом:
/////////////
// 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
Любые советы оценены.