Browse Source

fix: server结构变更

feature/three
guoapeng 3 months ago
parent
commit
7759d1c534
  1. 67
      server/index.js
  2. 40
      server/routes/debug.js
  3. 28
      server/utils/websocket.js

67
server/index.js

@ -1,6 +1,7 @@
// const express = require('express') // const express = require('express')
import express from 'express' import express from 'express'
import { WebSocketServer } from 'ws'
import { debugRoutes } from './routes/debug.js'
import { initWebSocketServer } from './utils/websocket.js'
const app = express() const app = express()
@ -10,64 +11,8 @@ app.listen(PORT, () => {
}) })
app.use(express.json()) 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)

40
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)
})
}

28
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('客户端断开')
})
})
}
Loading…
Cancel
Save