const { Server } = require("socket.io"); //初始化 const io = new Server(3000, { // 端口 路径 适配器 连接超时等等 }); //!!!数据分组!!!! //群信息保存 var onlineUser = { // "groupName":[ // { // name:"", // ronm:"", // img:"", // type:""//1群主 2管理 3成员 // } // ] } //聊天记录八平村 var chatRecord = { // "groupName":[ // { // // name:"", // // ronm:"", // // img:"", // // type:""//1群主 2管理 3成员 // } // ] } //!!!前后端连接同样也要分组!!!! io.on("connection", (socket) => { console.log("客户端建立连接了..."); //监听登录页面 socket.on("UserLogin", function (arg) { console.log(arg); //群已存在 3群成员 if (onlineUser.hasOwnProperty(arg.room)) { arg.type = 3 //创建群 1群主 建立群数组为空 } else { arg.type = 1 onlineUser[arg.room] = [] } //保存登陆数据 onlineUser[arg.room].push(arg); //将客户端添加到相同的room里 socket.join(arg.room); //系统消息 欢迎新人 io.in(arg.room).emit("SystemMessage", `欢迎${arg.name}加入群聊`); // console.log("onlineUser",onlineUser); }); //服务器监听消息发送消息 socket.on("sendMessage", (arg) => { //判断聊天记录是否是第一次建立 if (!chatRecord.hasOwnProperty(arg.room)) { //是 则追加一个room为空用于存储后续相关数据 chatRecord[arg.room] = [] } //将聊天记录保存 chatRecord[arg.room].push(arg) //服务器推送消息 //除开发送者将详细推送给房间内所有人 socket.to(arg.room).emit("PushMessage", arg); }) //监听在线成员询问事件 socket.on("getOnlineUser", (arg) => { io.in(arg.room).emit("PushOnlineUser", onlineUser[arg.room]); }) //【2后端】服务器监听窗口抖动 socket.on("SetShake", (arg) => { socket.to(arg.room).emit("PushShake"); }); socket.on("disconnect", () => { console.log("客户端断开连接了..."); }) });