90 lines
2.1 KiB
JavaScript
90 lines
2.1 KiB
JavaScript
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("客户端断开连接了...");
|
|
})
|
|
});
|