update:语音优化

This commit is contained in:
2026-08-19 14:04:12 +08:00
parent 75cfcd66ee
commit bb224c9f29
13 changed files with 153 additions and 86 deletions
+11 -25
View File
@@ -9,7 +9,11 @@ import {
getServerMessageTypeName,
} from "@/utils/matchProtocol";
import { MESSAGETYPESV2 } from "@/constants";
import { getDirectionText, getInvalidShotAudioKey } from "@/util";
import {
getDirectionText,
getDistanceCheckAudioKey,
getInvalidShotAudioKey,
} from "@/util";
import {
normalizeId,
normalizeMatchInfo,
@@ -49,20 +53,6 @@ const ENABLE_REALTIME_MESSAGE_LOG = (() => {
}
})();
function getServerMessageLogSummary(message = {}) {
const practiceInfo = message.practice_info || message.practiceInfo || {};
const matchInfo = message.match_info || message.matchInfo || {};
return {
type: message.type,
matchId: normalizeId(pickField(message, "matchId", "match_id")),
sequence: message.sequence,
practiceDetailCount: Array.isArray(practiceInfo.details)
? practiceInfo.details.length
: 0,
roundCount: Array.isArray(matchInfo.rounds) ? matchInfo.rounds.length : 0,
};
}
// 比赛服消息类型先映射成项目里已有的 V2 业务消息,页面仍然复用原来的 socket-inbox 流程。
const BUSINESS_TYPE_BY_SERVER_TYPE = {
[ServerMessageType.SERVER_MSG_MATCH_READY]: MESSAGETYPESV2.AboutToStart,
@@ -87,6 +77,9 @@ function normalizeShootData(shootData) {
if (normalized.distance === undefined && normalized.dst !== undefined) {
normalized.distance = normalized.dst;
}
if (normalized.targetOk === undefined && normalized.target_ok !== undefined) {
normalized.targetOk = normalized.target_ok;
}
return normalized;
}
@@ -368,10 +361,8 @@ function getShootResultAudioKeys(shootData) {
}
function getTestDistanceAudioKeys(shootData) {
const distance = Number(shootData?.distance ?? shootData?.dst);
if (Number.isNaN(distance)) return [];
if (distance === 0) return ["未发现靶纸,请瞄准靶纸射箭"];
return [distance / 100 >= 5 ? "\u8ddd\u79bb\u5408\u683c" : "\u8ddd\u79bb\u4e0d\u8db3"];
if (!shootData) return [];
return [getDistanceCheckAudioKey(shootData)];
}
function getAckAudioKeys(message, businessMessage) {
@@ -805,13 +796,8 @@ function handleMessage(data) {
return;
}
const typeName = getServerMessageTypeName(message.type);
if (ENABLE_REALTIME_MESSAGE_LOG) {
console.log(
"收到比赛服 WebSocket 消息",
typeName,
getServerMessageLogSummary(message)
);
console.log("收到比赛服 WebSocket 消息", message);
}
const decodedMatchId = normalizeId(pickField(message, "matchId", "match_id"));