在这里只有群聊,二个好友聊天,可以认为是建了一个二人的群聊。
const express = require('express'); const http = require('http'); const socketIo = require('socket.io'); const cors = require('cors'); // 引入 cors 中间件 const app = express(); const server = http.createServer(app); const io = socketIo(server, { cors: { origin: "*", // 允许所有来源 methods: ["GET", "POST"] } }); // 使用 cors 中间件 app.use(cors()); const port = 3000; const groups = {}; io.on('connection', (socket) => { console.log('New user connected'); // 用户加入群组 socket.on('joinGroup', ({ groupName, userName }) => { socket.join(groupName); groups[socket.id] = { groupName, userName }; socket.to(groupName).emit('message', `${userName} has joined the group`); console.log(`${userName} joined group ${groupName}`); }); // 发送消息 socket.on('sendMessage', ({ groupName, message, userName }) => { io.to(groupName).emit('message', `${userName}: ${message}`); console.log(`Message sent to ${groupName}: ${userName}: ${message}`); }); // 踢人 socket.on('kickUser', ({ groupName, userName }) => { for (let id in groups) { if (groups[id].userName === userName && groups[id].groupName === groupName) { io.sockets.sockets.get(id).leave(groupName); io.to(groupName).emit('message', `${userName} has been kicked from the group`); console.log(`${userName} was kicked from group ${groupName}`); break; } } }); // 用户断开连接 socket.on('disconnect', () => { if (groups[socket.id]) { const { groupName, userName } = groups[socket.id]; socket.to(groupName).emit('message', `${userName} has left the group`); delete groups[socket.id]; console.log(`${userName} left group ${groupName}`); } }); }); server.listen(port, () => { console.log(`Server running on port ${port}`); }); uniapp的界面
{{ msg }} 运行效果: