diff --git a/server/index.js b/server/index.js index 4768925..088ea12 100644 --- a/server/index.js +++ b/server/index.js @@ -1,6 +1,7 @@ // const express = require('express') import express from 'express' -import { WebSocketServer } from 'ws' +import { debugRoutes } from './routes/debug.js' +import { initWebSocketServer } from './utils/websocket.js' const app = express() @@ -10,64 +11,8 @@ app.listen(PORT, () => { }) app.use(express.json()) -const levels = ['info', 'warn', 'success', 'error', 'finish'] +// 初始化 WebSocket 服务 +initWebSocketServer() -app.post('/api/debug/cmd', (req, res) => { - const { commandId, command, params } = req.body - console.log('收到命令:', command, '参数:', params) - - // 模拟返回数据 - const mockResponse = { - code: '0', - msg: '成功', - data: null, - } - - let messageNum = 0 - - // 异步广播消息 - setTimeout(() => { - res.json(mockResponse) - const poll = setInterval(() => { - if (messageNum === 10) { - clearInterval(poll) - } - broadcast({ - type: 'notification', - data: { - commandId, - command, - level: levels[Math.floor(Math.random() * levels.length)], - title: `步骤${messageNum}执行完成`, - content: `具体信息${messageNum}`, - dateTime: new Date().toLocaleString(), - }, - }) - messageNum++ - }, Math.floor(Math.random() * (1000 - 500 + 1)) + 500) - }, 1000) -}) - -const wss = new WebSocketServer({ port: 9527 }) - -const clients = new Set() -wss.on('connection', (ws) => { - clients.add(ws) - ws.on('close', () => { - console.log('客户端断开') - }) -}) - -function broadcast(message) { - try { - const jsonMessage = JSON.stringify(message) - clients.forEach((client) => { - if (client.readyState === WebSocket.OPEN) { - client.send(jsonMessage) - } - }) - } - catch (e) { - console.log('广播发送失败:', e, message) - } -} +// 注册路由模块 +debugRoutes(app) diff --git a/server/routes/debug.js b/server/routes/debug.js new file mode 100644 index 0000000..2b62e1a --- /dev/null +++ b/server/routes/debug.js @@ -0,0 +1,40 @@ +import { broadcast } from '../utils/websocket.js' + +export const debugRoutes = (app) => { + const statusList = ['info', 'warn', 'success', 'error', 'finish'] + + app.post('/api/debug/cmd', (req, res) => { + const { commandId, command, params } = req.body + console.log('收到命令:', command, '参数:', params) + + // 模拟返回数据 + const mockResponse = { + code: '0', + msg: '成功', + data: null, + } + + let messageNum = 0 + + // 异步广播消息 + setTimeout(() => { + res.json(mockResponse) + const poll = setInterval(() => { + if (messageNum === 10) { + clearInterval(poll) + } + broadcast({ + type: 'cmd_debug', + data: { + commandId, + command, + status: statusList[Math.floor(Math.random() * statusList.length)], + title: `步骤${messageNum}执行完成`, + content: `具体信息${messageNum}`, + }, + }) + messageNum++ + }, Math.floor(Math.random() * (1000 - 500 + 1)) + 500) + }, 1000) + }) +} diff --git a/server/utils/websocket.js b/server/utils/websocket.js new file mode 100644 index 0000000..de2444d --- /dev/null +++ b/server/utils/websocket.js @@ -0,0 +1,28 @@ +import { WebSocketServer } from 'ws' + +export const clients = new Set() + +export const broadcast = (message) => { + try { + const jsonMessage = JSON.stringify(message) + clients.forEach((client) => { + if (client.readyState === WebSocket.OPEN) { + client.send(jsonMessage) + } + }) + } + catch (e) { + console.log('广播发送失败:', e, message) + } +} + +export const initWebSocketServer = () => { + const wss = new WebSocketServer({ port: 9527 }) + + wss.on('connection', (ws) => { + clients.add(ws) + ws.on('close', () => { + console.log('客户端断开') + }) + }) +}