74 lines
1.6 KiB
JavaScript
74 lines
1.6 KiB
JavaScript
const { Server } = require("socket.io");
|
|
|
|
const io = new Server(3000, {});
|
|
|
|
|
|
var onlineUser = {
|
|
// '10086': [
|
|
// {
|
|
// name: '',
|
|
// room: '',
|
|
// img: '',
|
|
// type: '', // 1群主 2管理 3 群成员
|
|
// }
|
|
// ]
|
|
}
|
|
|
|
var chatRecord = {
|
|
|
|
}
|
|
|
|
io.on("connection", (socket) => {
|
|
console.log("客户端建立连接了........");
|
|
|
|
|
|
//程序监听并打印出来前端给的数据
|
|
socket.on("UserLogin", function (arg) {
|
|
console.log(arg);
|
|
//如果群已经存在
|
|
if (onlineUser.hasOwnProperty(arg.room)) {
|
|
arg.type = 3
|
|
} else {
|
|
//反之群没有就是创建一个群,第一个为群主
|
|
arg.type = 1
|
|
onlineUser[arg.room] = []
|
|
}
|
|
|
|
|
|
|
|
//把用户信息加到数组里面去
|
|
onlineUser[arg.room].push(arg)
|
|
//只在相同的房间里发信息不会串了
|
|
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)) {
|
|
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]);
|
|
});
|
|
|
|
|
|
|
|
socket.on("SetShake", (arg) => {
|
|
socket.to(arg.room).emit("PushShake");
|
|
});
|
|
|
|
socket.on("disconnect", () => {
|
|
console.log("客户端断开连接了........");
|
|
});
|
|
|
|
|
|
}); |