12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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);
|