first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,176 @@
const express = require("express");
const { writeFileSync } = require("fs");
const { createServer } = require("http");
const { Server } = require("socket.io");
const app = express();
app.use('/upload', express.static('upload'))
const httpServer = createServer(app);
const io = new Server(httpServer, {
cors: {
origin: "*",
allowedHeaders: "*",
credentials: true
}
});
let onlineUserSocket = []
// 在线群和用户
let onlineUserList = {
// "10086": [
// {
// socketId: SWERGFAEGRFBE345Y
// room_id: "10086",
// user_img: "../img/7.jpg",
// user_name: "bmy",
// level: 1, // 1群主(第一个加群的人) 2管理员(群主右键设置的) 3普通成员(之后进入的)
// },
// {
// socketObject: socket
// room_id: "10086",
// user_img: "../img/7.jpg",
// user_name: "bmy",
// level: 1, // 1群主(第一个加群的人) 2管理员(群主右键设置的) 3普通成员(之后进入的)
// }
// ],
// "10011": [
// {
// room_id: "10011",
// user_img: "../img/7.jpg",
// user_name: "bmy",
// level: 1,
// }
// ]
}
// 聊天记录
let ChatRecords = {
"10086": [
{
room_id: "10086",
user_img: "../img/7.jpg",
user_name: "bmy",
timestamp: '1234564323456',
level: 1, // 1群主(第一个加群的人) 2管理员(群主右键设置的) 3普通成员(之后进入的)
message: '这是我发的消息'
}
]
}
io.on("connection", (socket) => {
console.log("链接成功...");
// 加入群聊
socket.on('JoinRoom', (msg) => {
socket.roomId = msg.room_id
// 已经存在了这个群
if (onlineUserList.hasOwnProperty(msg.room_id)) {
if (checkUserNameisExist(msg)) {
msg.level = 3
// msg.socket = socket
onlineUserList[msg.room_id].push(msg)
}
msg.socketId = socket.id
onlineUserSocket.push(socket)
socket.join(msg.room_id);
console.log("已经存在了这个群");
// 不存在这个群
} else {
onlineUserList[msg.room_id] = []
msg.socketId = socket.id
onlineUserSocket.push(socket)
msg.level = 1
onlineUserList[msg.room_id].push(msg)
console.log(onlineUserList[msg.room_id]);
socket.join(msg.room_id);
console.log("不存在这个群");
}
io.in(msg.room_id).emit("onLineUserList", onlineUserList[msg.room_id]);
io.in(msg.room_id).emit("WelcomeUser", `欢迎用户 ${msg.user_name} 加入群聊`);
});
socket.on('sendMessage', (msg) => {
console.log("msg: ", msg);
socket.to(msg.room_id).emit("ServerMessage", msg);
})
socket.on('uploadFile', (msg) => {
console.log("图片base64: ", msg);
msg.user.message = saveFile(msg)
socket.to(msg.user.room_id).emit("uploadImgName", msg.user);
})
socket.on('socketShake', (msg) => {
if (msg.hasOwnProperty("clickUserName")) {
console.log("私发抖动");
let userSocket = onlineUserSocket.filter(v => onlineUserList[msg.room_id].filter(v => msg.clickUserName == v.user_name)[0].socketId == v.id)[0];
let a = parseInt(Math.random() * 100000)
console.log("a: ", a);
socket.join(a);
userSocket.join(a)
// console.log("socket: ", socket.id);
// console.log("userSocket: ", userSocket.id);
// console.log(socket.rooms);
// console.log(userSocket.rooms);
io.in(a).emit("ShakeMessage", msg);
io.in(a).emit("openShake");
} else {
console.log("群发抖动");
io.in(msg.room_id).emit("openShake");
io.in(msg.room_id).emit("ShakeMessage", msg);
}
})
socket.on("disconnect", (reason) => {
socket.leave(socket.roomId);
});
});
function saveFile(imgData) {
var base64Data = imgData.base64.replace(/^data:image\/\w+;base64,/, "");
var dataBuffer = Buffer.from(base64Data, 'base64');
let fileName = `${new Date().getTime().toString() + (Math.random() * new Date().getTime())}.${imgData.fileType}`
writeFileSync(`upload/${fileName}`, dataBuffer);
return fileName
}
function checkUserNameisExist(msg) {
let arr = onlineUserList[msg.room_id].filter(v => v.user_name == msg.user_name)
return arr.length == 0 ? true : false
}
httpServer.listen(3000, () => {
console.log("ws运行在: ws://127.0.0.1:3000");
});