const express = require('express') const WebSocket = require('ws') const { v4: uuidv4 } = require('uuid') const app = express() const server = require('http').createServer(app) const wss = new WebSocket.Server({ server }) let userId = 0 let onlineUsers = {} wss.on('connection', ws => { ws.id = uuidv4() // 为每个连接分配一个唯一的 ID ws.on('message', message => { let user = JSON.parse(message) user.id = ++userId onlineUsers[ws.id] = user // 用户上线,添加到在线用户列表 }) ws.on('close', () => { delete onlineUsers[ws.id] // 用户下线,从在线用户列表中移除 }) }) app.get('/heartbeat', (req, res) => { console.log('Heartbeat', req.query) }) // 每隔5秒打印在线用户 setInterval(() => { console.log(new Date()) console.log('Online users:', onlineUsers) }, 5000) server.listen(3000, () => { console.log('WebSocket server listening on port 3000') })