const { Server } = require("socket.io") const db = require('node-little-db') const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const io = new Server({ cors: { origin: ["*"] } }); // 日志配置 const log4js = require("log4js"); log4js.configure({ appenders: { socket: { type: "file", filename: "./socket.log" } }, categories: { default: { appenders: ["socket"], level: "debug" } } }); const logger = log4js.getLogger('socket'); // 中间件 = 验证 io.use((socket, next) => { const { MAC, NAME } = socket.handshake.auth; // 新建|查询数据 const config = db.create('config') if (config[NAME] === MAC) { logger.debug(NAME + ':' + MAC, '开始验证') next() } else { logger.debug(NAME + ':' + MAC, '验证错误') next(new Error('Mac error')) } }) // 验证成功即断开连接 io.on('connection', async socket => { const { NAME, MAC } = socket.handshake.auth // 断开=>轮询验证 await sleep(5000) socket.disconnect(true) logger.debug(NAME + ':' + MAC, '验证成功') }) logger.info('验证服务启动:45697') io.listen(45697)