85 lines
2.4 KiB
JavaScript
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); |