Files
ClassContent/历届学生/front-end-team/项目练习/上课项目/聊天室/backend/index.js
2024-09-27 02:06:13 +08:00

85 lines
2.4 KiB
JavaScript

const io = require('socket.io')();
// 存储在线用户数
var onLineUser = {
// "10086": [
// {
// user_img: '../img/1.jpg',
// user_name: '1',
// user_room: '10086',
// user_identity: 'admin', // leader 群主, admin 管理员, other 普通成员
// },
// {
// user_img: '../img/1.jpg',
// user_name: '1',
// user_room: '10086',
// user_identity: 'admin', // leader 群主, admin 管理员, other 普通成员
// }
// ]
}
// 群聊天记录
var ChatRecord = {
// 10086: [
// {
// user_img: '../img/1.jpg',
// user_name: '1',
// user_room: '10086',
// user_identity: 'admin',
// user_record: '今天天气真的很好'
// },
// {
// user_img: '../img/1.jpg',
// user_name: 'bmy',
// user_room: '10086',
// user_identity: 'other',
// user_record: '今天不好'
// }
// ]
}
io.on('connection', socket => {
console.log("客户端连接建立成功: ")
// socket.on('error', (error) => {});
socket.on("JoinGroupChat", (res) => {
// 如果存在这个群,返回 true
if (onLineUser.hasOwnProperty(res.user_room)) {
res.user_identity = "other"
onLineUser[res.user_room].push(res)
} else {
onLineUser[res.user_room] = []
res.user_identity = "leader"
onLineUser[res.user_room].push(res)
}
// 将 socket 加入群聊
socket.join(res.user_room);
// 向群内所有人推送欢迎消息
io.in(res.user_room).emit("WelcomeUser", `欢迎${res.user_name}加入群聊`);
console.log("onLineUser: ", onLineUser)
})
// 接受聊天记录
socket.on("sendChatMessage",(res) => {
if (!ChatRecord.hasOwnProperty(res.user_room)) {
ChatRecord[res.user_room] = []
}
ChatRecord[res.user_room].push(res)
socket.to(res.user_room).emit("getChatMessage", res);
})
socket.on("OnLineUserList", (res) => {
io.in(res.user_room).emit("SendOnLineUserList", onLineUser[res.user_room]);
})
socket.on('disconnect', (reason) => {
console.log("客户端连接已断开: ")
});
});
io.listen(3000);