server.js 938 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. const express = require('express')
  2. const WebSocket = require('ws')
  3. const { v4: uuidv4 } = require('uuid')
  4. const app = express()
  5. const server = require('http').createServer(app)
  6. const wss = new WebSocket.Server({ server })
  7. let userId = 0
  8. let onlineUsers = {}
  9. wss.on('connection', ws => {
  10. ws.id = uuidv4() // 为每个连接分配一个唯一的 ID
  11. ws.on('message', message => {
  12. let user = JSON.parse(message)
  13. user.id = ++userId
  14. onlineUsers[ws.id] = user // 用户上线,添加到在线用户列表
  15. })
  16. ws.on('close', () => {
  17. delete onlineUsers[ws.id] // 用户下线,从在线用户列表中移除
  18. })
  19. })
  20. app.get('/heartbeat', (req, res) => {
  21. console.log('Heartbeat', req.query)
  22. })
  23. // 每隔5秒打印在线用户
  24. setInterval(() => {
  25. console.log(new Date())
  26. console.log('Online users:', onlineUsers)
  27. }, 5000)
  28. server.listen(3000, () => {
  29. console.log('WebSocket server listening on port 3000')
  30. })