| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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) {
- next()
- } else if (config[NAME] === '') {
- // 允许第一次空MAC
- config[NAME] = MAC
- next()
- } else {
- logger.debug(NAME + '验证错误' + MAC);
- next(new Error('Mac error'))
- }
- })
- io.on('connection', async socket => {
- const { NAME, MAC } = socket.handshake.auth
- logger.debug(NAME, '连接' + MAC)
- // 断开=>轮询验证
- await sleep(5000)
- socket.disconnect(true)
- logger.debug(NAME + '二次验证' + MAC)
- })
- console.log(`验证服务启动:49800`)
- logger.info('验证服务启动:49800')
- io.listen(45697)
|