const express = require('express'); const path = require('path'); const app = express(); const port = 8898; const wsPort = 8899; const WebSocket = require('ws') const socket = new WebSocket.Server({port:8899}) const chokidar = require('chokidar'); // 要监视的根目录 const rootDir = '.'; // 要忽略的目录数组 const ignoredDirs = ['.vscode', '.idea', 'node_modules', '.git','*.zip']; // 保存所有连接的客户端 const clients = []; socket.on('connection',function connection(ws,req){ clients.push(ws); // 当客户端断开连接时,移除客户端 ws.on('close', () => { console.log('Client disconnected'); const index = clients.indexOf(ws); if (index !== -1) clients.splice(index, 1); }); const ip = req.socket.remoteAddress const port = req.socket.remotePort const clientName = ip + port; console.log('%s is connected ',clientName) }) chokidar.watch(rootDir, { ignored: ignoredDirs.concat('**/*.js', '**/*.html'), ignoreInitial: true }).on('all', (event, path) => { switch (event) { case "change": case "add": clients.forEach((client) => { if (client.readyState === WebSocket.OPEN) { client.send(JSON.stringify(true)); } }); break; } }); app.use(express.static(path.join(__dirname, '/'))); app.listen(port, () => { console.log(`server node start ${port}!`,); }) console.log(`正在监视${rootDir}目录...`); console.log('WebSocket服务启动在端口:'+wsPort);