12345678910111213141516171819202122232425262728293031323334 |
- 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] // 用户下线,从在线用户列表中移除
- })
- })
- // 每隔5秒打印在线用户
- setInterval(() => {
- console.log(new Date())
- console.log('Online users:', onlineUsers)
- }, 5000)
- server.listen(3000, () => {
- console.log('WebSocket server listening on port 3000')
- })
|