ここでの他のすべてのソリューションはOSに依存しています。OSの独立したソリューションでは、socket.ioを次のように使用します。
package.json
2つのスクリプトがあります。
"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を使用してサーバーを停止する場合の一般的な方向性を示します。