Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
paopao
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cocktail-party
paopao
Commits
8eb3a4a9
提交
8eb3a4a9
authored
3月 19, 2026
作者:
lidongxu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复:尝试等待其他玩家但是实际都结束的问题
上级
f10eea57
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
16 行增加
和
5 行删除
+16
-5
roomHandler.js
server/src/socket/roomHandler.js
+16
-5
没有找到文件。
server/src/socket/roomHandler.js
浏览文件 @
8eb3a4a9
...
...
@@ -252,10 +252,6 @@ function registerRoomHandlers(ws, { broadcastToRoom, joinRoom, leaveAllRooms, ro
_clearRoomTimer
(
roomId
);
await
_finishSession
(
ws
,
roomId
,
sessionId
,
score
);
await
prisma
.
room
.
update
({
where
:
{
roomId
},
data
:
{
status
:
'finished'
},
});
// 收集该玩家的分数和队伍
if
(
!
gameOverScores
.
has
(
roomId
))
{
...
...
@@ -283,9 +279,24 @@ function registerRoomHandlers(ws, { broadcastToRoom, joinRoom, leaveAllRooms, ro
}
broadcastToRoom
(
roomId
,
'room:gameOver'
,
{
roomId
,
scores
:
scoresObj
,
nicknames
:
nicknamesObj
,
teams
:
teamsObj
,
playerId
,
nickname
});
// 如果所有玩家都已上报分数,清理收集表
// 广播玩家完成进度给所有人(broadcastToRoom 不传 excludeWs 时包含发送者)
const
progressPayload
=
{
roomId
,
finishedCount
:
reportedPlayers
,
totalCount
:
totalPlayers
,
playerId
};
broadcastToRoom
(
roomId
,
'room:playerFinished'
,
progressPayload
);
// 如果所有玩家都已上报分数,广播 allFinished 并清理
if
(
reportedPlayers
>=
totalPlayers
)
{
console
.
log
(
`[Room] 所有玩家分数收集完成 roomId=
${
roomId
}
`
);
// 广播全员完成事件(含最终分数),通知客户端显示结果
const
allFinishedPayload
=
{
roomId
,
scores
:
scoresObj
,
nicknames
:
nicknamesObj
,
teams
:
teamsObj
};
broadcastToRoom
(
roomId
,
'room:allFinished'
,
allFinishedPayload
);
// 房间状态标记为 finished(所有玩家都完成后才更新)
await
prisma
.
room
.
update
({
where
:
{
roomId
},
data
:
{
status
:
'finished'
},
});
gameOverScores
.
delete
(
roomId
);
}
}
catch
(
err
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论