简短的开场白
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 43s
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 43s
This commit is contained in:
parent
0b02f01bec
commit
dcef985ffd
106
server.js
106
server.js
@ -138,12 +138,13 @@ const scenes = [
|
||||
apiKey: 'bot-20250724150616-xqpz8', // 起床场景的API key
|
||||
openingLines: [
|
||||
// '你靠得近点...像梦里那样',
|
||||
"刚醒就看到你,比闹钟好使一百倍。",
|
||||
"刚醒就看到你,真好。",
|
||||
// "昨晚梦里喊你名字喊醒了,现在视频看到你,心跳比梦里还烫。",
|
||||
// "你穿我T恤的样子...让我想咬住衣领不放。",
|
||||
"宝贝早...你声音比阳光还暖。",
|
||||
// "喉咙里有咖啡味...要不要来尝尝?记得上次你咬我锁骨时,咖啡还温着。",
|
||||
"晨雾遮住你半张脸...但你的呼吸声比雾气更潮湿,让我想起你咬我耳垂的感觉。"
|
||||
// "喂...嗯...刚醒...",
|
||||
"困死我了...你起这么早啊?"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -153,14 +154,14 @@ const scenes = [
|
||||
tag: 'driving',
|
||||
apiKey: 'bot-20250623140339-r8f8b', // 开车场景的API key
|
||||
openingLines: [
|
||||
'宝贝起了?看到你的脸,我这早起的怨气‘咻’一下就飞走了。车窗外的阳光都没你眼睛亮。',
|
||||
'刚过桥,下面河水在闪光,突然就好想带你来兜风…你负责吃零食看风景,我负责偷瞄你。',
|
||||
'喂?刚把导航设好。你说吧,我听着呢。',
|
||||
'喂,宝贝,我开车呢,刚出小区',
|
||||
// '看到那个大钟楼没?每次路过都想你。想着要是能牵着你的手,站在最高层往下看该多好。',
|
||||
'唉,快到了…真不想挂。感觉你像块小磁铁,隔着屏幕都想把我吸过去。今天上班肯定满脑子都是你。',
|
||||
'要开始堵车了...要是你在副驾的话,这段路该多甜呀',
|
||||
'宝贝起床了,刚过红绿灯就忍不住想你了,路上全是你的影子~',
|
||||
'车载音乐随机到那首我们接吻时哼的歌,心跳又乱了',
|
||||
'导航说今天要开58分钟,其实想开58小时去你心里'
|
||||
'喂宝?开车呢,你说。',
|
||||
'喂宝?路上呢,你说。',
|
||||
// '宝贝起床了,刚过红绿灯就忍不住想你了,路上全是你的影子~',
|
||||
// '车载音乐随机到那首我们接吻时哼的歌,心跳又乱了',
|
||||
// '导航说今天要开58分钟,其实想开58小时去你心里'
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -170,11 +171,11 @@ const scenes = [
|
||||
tag: 'coffee',
|
||||
apiKey: 'bot-20250804180724-4dgtk', // 喝茶场景的API key
|
||||
openingLines: [
|
||||
'拿铁拉花是你上次画的爱心形状,甜度刚好',
|
||||
'摩卡有点苦,要是加上你的笑容就甜了',
|
||||
'咖啡师问我一个人?我说在等我的甜度',
|
||||
'今天的冰拿铁好甜,是不是你偷偷往我杯子里撒糖了?',
|
||||
'拉花师给我在咖啡里画了颗心形的奶泡,说是给视频里的小仙女加糖',
|
||||
'喂宝?公司楼下喝咖啡呢。',
|
||||
'宝贝,今天的第一杯咖啡,你喝了吗?',
|
||||
'报告领导,咖啡补给中!',
|
||||
'咖啡太好喝了,猜我在哪摸鱼呢。',
|
||||
// '拉花师给我在咖啡里画了颗心形的奶泡,说是给视频里的小仙女加糖',
|
||||
// '这杯好苦…但一看到你,就自动回甘了。比加十包糖都管用。你说你是不是我的专属甜味剂?'
|
||||
]
|
||||
},
|
||||
@ -185,13 +186,11 @@ const scenes = [
|
||||
tag: 'sleep',
|
||||
apiKey: 'bot-20250808120704-lbxwj', // 睡觉场景的API key
|
||||
openingLines: [
|
||||
'宝贝,一看到你,我这电量‘噌’就满了。准备关机前最后充会儿电…嗯,用眼睛充。',
|
||||
'熄灯前最后一道光是你,真好。感觉今天积攒的烦心事,都被你眼睛里的星星照没了。',
|
||||
'唉…手指头碰不到你屏幕都嫌凉。下次见面,这距离得用抱抱补回来,利息按秒算。',
|
||||
'周围好安静,就剩你的呼吸声当背景音乐了。比什么助眠App都好使…就是听久了,心跳会抢拍子。',
|
||||
'困不困?我眼皮在打架了…但就是想再多看你几秒。感觉多看一秒,梦里遇见你的概率就大一点。',
|
||||
'好啦,我的小月亮,该哄世界睡觉了…但你先哄哄我?随便说句什么,我当睡前故事收藏。',
|
||||
'捕捉到一只睡前小可爱…成功!',
|
||||
'宝贝,一看到你,就不困了。',
|
||||
'熄灯前最后一道光是你,真好。',
|
||||
'宝贝困不困?我眼皮在打架了…',
|
||||
'宝贝,困不困?',
|
||||
// '捕捉到一只睡前小可爱…成功!',
|
||||
'世界要静音了…但你的声音是白名单。多说几句?'
|
||||
]
|
||||
}
|
||||
@ -343,7 +342,19 @@ app.get('/api/current-scene/opening-line', (req, res) => {
|
||||
|
||||
// Socket.IO 连接处理
|
||||
io.on('connection', (socket) => {
|
||||
// 检查是否超过最大用户数
|
||||
if (connectedClients.size >= MAX_USERS) {
|
||||
console.log('拒绝连接,已达到最大用户数:', socket.id);
|
||||
socket.emit('connection-rejected', {
|
||||
reason: '系统当前只支持一位用户同时使用,请稍后再试'
|
||||
});
|
||||
socket.disconnect(true);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('用户连接:', socket.id);
|
||||
activeUser = socket.id;
|
||||
|
||||
connectedClients.set(socket.id, {
|
||||
socket: socket,
|
||||
currentVideo: getDefaultVideo(),
|
||||
@ -531,8 +542,22 @@ io.on('connection', (socket) => {
|
||||
|
||||
// 断开连接
|
||||
socket.on('disconnect', () => {
|
||||
console.log('用户断开连接:', socket.id);
|
||||
connectedClients.delete(socket.id);
|
||||
console.log('用户断开连接:', socket.id);
|
||||
const client = connectedClients.get(socket.id);
|
||||
if (client) {
|
||||
// 广播用户离开事件
|
||||
socket.broadcast.emit('user-disconnected', {
|
||||
id: socket.id,
|
||||
username: client.username
|
||||
});
|
||||
}
|
||||
connectedClients.delete(socket.id);
|
||||
|
||||
// 清除活跃用户
|
||||
if (activeUser === socket.id) {
|
||||
activeUser = null;
|
||||
console.log('活跃用户已清除,系统现在可供新用户使用');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@ -546,3 +571,38 @@ server.listen(PORT, '0.0.0.0', async () => {
|
||||
// 导出消息历史管理器供其他模块使用
|
||||
module.exports = { messageHistory };
|
||||
console.log(`访问 http://localhost:${PORT} 开始使用`);
|
||||
|
||||
// 在现有的代码的基础上添加以下内容
|
||||
|
||||
// 在 connectedClients 定义后立即添加(约第97行)
|
||||
let activeUser = null; // 当前活跃用户
|
||||
const MAX_USERS = 1; // 最大用户数
|
||||
|
||||
// 在静态文件中间件之前添加主页路由检查(约第37行之后)
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
|
||||
// 主页路由 - 必须在静态文件服务之前
|
||||
app.get('/', (req, res) => {
|
||||
if (connectedClients.size >= MAX_USERS) {
|
||||
// 如果已有用户在线,重定向到等待页面
|
||||
res.sendFile(path.join(__dirname, 'src', 'waiting.html'));
|
||||
} else {
|
||||
// 否则正常访问主页
|
||||
res.sendFile(path.join(__dirname, 'src', 'index.html'));
|
||||
}
|
||||
});
|
||||
|
||||
// 检查可用性API
|
||||
app.get('/api/check-availability', (req, res) => {
|
||||
const available = connectedClients.size < MAX_USERS;
|
||||
res.json({
|
||||
available,
|
||||
currentUsers: connectedClients.size,
|
||||
maxUsers: MAX_USERS
|
||||
});
|
||||
});
|
||||
|
||||
// 静态文件服务 - 必须在主页路由之后
|
||||
app.use(express.static('src'));
|
||||
app.use('/videos', express.static('videos'));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user