| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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)
|