zhibo/live-streaming/server/store/roomStore.js
2025-12-15 11:21:21 +08:00

72 lines
1.3 KiB
JavaScript

const { v4: uuidv4 } = require('uuid');
// 内存存储
const rooms = new Map();
const roomStore = {
// 创建房间
create(data) {
const id = uuidv4();
const room = {
id,
title: data.title,
streamerName: data.streamerName,
streamKey: id,
isLive: false,
viewerCount: 0,
createdAt: new Date().toISOString(),
startedAt: null
};
rooms.set(id, room);
return room;
},
// 获取所有房间
getAll() {
return Array.from(rooms.values());
},
// 根据 ID 获取房间
getById(id) {
return rooms.get(id) || null;
},
// 根据 streamKey 获取房间
getByStreamKey(streamKey) {
return rooms.get(streamKey) || null;
},
// 更新房间
update(id, data) {
const room = rooms.get(id);
if (!room) return null;
const updated = { ...room, ...data };
rooms.set(id, updated);
return updated;
},
// 设置直播状态
setLiveStatus(streamKey, isLive) {
const room = rooms.get(streamKey);
if (!room) return null;
room.isLive = isLive;
room.startedAt = isLive ? new Date().toISOString() : null;
rooms.set(streamKey, room);
return room;
},
// 删除房间
delete(id) {
return rooms.delete(id);
},
// 清空所有房间 (测试用)
clear() {
rooms.clear();
}
};
module.exports = roomStore;