const options = {}; const io = require('socket.io')(options); // 存放在线的群和群成员 var userOneLine = { }; // 保存群聊天记录 var ChatRecord = { 1001: [ { userId: '1', userMessage: "" } ] }; io.on('connection', socket => { socket.on("Login", function(res) { console.log("Login.....", res); res.id = returnId(); socket.join(res.roomId); // 已经存在这个房间了 if (userOneLine.hasOwnProperty(res.roomId)) { res.type = 2; userOneLine[res.roomId].push(res); io.in(res.roomId).emit("system", `欢迎${res.name}加入群聊`); // 不存在这个群 } else { // 设置你为群主 res.type = 1; // 用你的roomId先创建一个空数组 userOneLine[res.roomId] = []; userOneLine[res.roomId].push(res); io.in(res.roomId).emit("system", `欢迎您成功创建 ${res.roomId} 群聊`); } console.log("userOneLine ==== ", userOneLine); io.in(res.roomId).emit("SendGroupMembers", userOneLine[res.roomId]); // socket.emit("success", { title: '我是后端的数据,哈哈哈' }); }) // 接受前端发送过来的聊天内容 socket.on("sendMessage", function(res){ console.log(res); socket.to(res.roomId).emit("getMessage", res); }) socket.on("getShake", function(res){ socket.to(res.roomId).emit("sendShake"); }) // 用户离线 socket.on("UserNoLine", function(res){ // 1: 从数组 userOneLine 删除 filter 离线 id 用户 io.in(res.roomId).emit("system", `xx 已离开群聊`); io.in("room1").emit("SendGroupMembers",userOneLine[res.roomId]); console.log('用户离线的时候调用,一般做系统通知,'); }) // 用户离线的时候调用,一般做系统通知, // 通知群内的人,xxx离开群聊了 socket.on('disconnect', (res) => {}); }); function returnId() { return new Date().getFullYear().toString() + (new Date().getMonth()+1).toString() + new Date().getDate() + new Date().getTime().toString() + Math.random() * new Date().getTime() } io.listen(3000);