여기에있는 다른 모든 솔루션은 OS에 따라 다릅니다. 모든 OS에 대한 독립 솔루션은 다음과 같이 socket.io를 사용합니다.
package.json
두 개의 스크립트가 있습니다.
"scripts": {
"start": "node server.js",
"stop": "node server.stop.js"
}
server.js-당신의 평범한 표현이 여기에 있습니다.
const express = require('express');
const app = express();
const server = http.createServer(app);
server.listen(80, () => {
console.log('HTTP server listening on port 80');
});
// Now for the socket.io stuff - NOTE THIS IS A RESTFUL HTTP SERVER
// We are only using socket.io here to respond to the npmStop signal
// To support IPC (Inter Process Communication) AKA RPC (Remote P.C.)
const io = require('socket.io')(server);
io.on('connection', (socketServer) => {
socketServer.on('npmStop', () => {
process.exit(0);
});
});
server.stop.js
const io = require('socket.io-client');
const socketClient = io.connect('http://localhost'); // Specify port if your express server is not using default port 80
socketClient.on('connect', () => {
socketClient.emit('npmStop');
setTimeout(() => {
process.exit(0);
}, 1000);
});
그것을 테스트
npm start
(평소처럼 서버를 시작하려면)
npm stop
(이제 실행중인 서버가 중지됩니다)
위의 코드는 테스트되지 않았지만 (내 코드의 축소 된 버전이며, 내 코드는 작동합니다) 그대로 작동합니다. 어느 쪽이든 socket.io를 사용하여 서버를 중지하려는 경우 취할 일반적인 방향을 제공합니다.