From 49e1bbbf1522c5c5eb8e43838931f8cbb6f30290 Mon Sep 17 00:00:00 2001 From: Chingfeng Li Date: Fri, 17 Oct 2025 17:51:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0test=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E4=BD=BF=E7=94=A8ota=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=9A=84=E8=BF=9E=E6=8E=A5=E4=BF=A1=E6=81=AF=E5=92=8C?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/xiaozhi-server/test/js/xiaoZhiConnect.js | 56 ++++++++++++------- main/xiaozhi-server/test/test_page.html | 13 ++--- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/main/xiaozhi-server/test/js/xiaoZhiConnect.js b/main/xiaozhi-server/test/js/xiaoZhiConnect.js index 606d615b..4ae5a71f 100644 --- a/main/xiaozhi-server/test/js/xiaoZhiConnect.js +++ b/main/xiaozhi-server/test/js/xiaoZhiConnect.js @@ -2,23 +2,46 @@ import { log } from './utils/logger.js'; import { otaStatusStyle } from './document.js' // WebSocket 连接 -export async function webSocketConnect(otaUrl,wsUrl,config){ - if (!validateWsUrl(wsUrl)) { - return; // 直接返回,不再往下执行 - } +export async function webSocketConnect(otaUrl, config){ if (!validateConfig(config)) { return; } - const ok = await sendOTA(otaUrl, config); - if (!ok) return; - // 使用自定义WebSocket实现以添加认证头信息 - let connUrl = new URL(wsUrl); - // 添加认证参数 + // 发送OTA请求并获取返回的websocket信息 + const otaResult = await sendOTA(otaUrl, config); + if (!otaResult) return; + + // 从OTA响应中提取websocket信息 + const { websocket } = otaResult; + if (!websocket || !websocket.url || !websocket.token) { + log('OTA响应中缺少websocket信息', 'error'); + return; + } + + // 使用OTA返回的websocket URL + let connUrl = new URL(websocket.url); + + // 添加token参数(从OTA响应中获取) + if (websocket.token) { + if(websocket.token.startsWith("Bearer ")){ + connUrl.searchParams.append('authorization', websocket.token); + } else { + connUrl.searchParams.append('authorization','Bearer ' + websocket.token); + } + } + + // 添加认证参数(保持原有逻辑) connUrl.searchParams.append('device-id', config.deviceId); connUrl.searchParams.append('client-id', config.clientId); - log(`正在连接: ${connUrl.toString()}`, 'info'); + + const wsurl = connUrl.toString() + + log(`正在连接: ${wsurl}`, 'info'); + + if (wsurl) { + document.getElementById('serverUrl').value = wsurl; + } return new WebSocket(connUrl.toString()); } @@ -48,7 +71,7 @@ function validateWsUrl(wsUrl){ } -// OTA发送请求,验证状态 +// OTA发送请求,验证状态,并返回响应数据 async function sendOTA(otaUrl, config) { try { const res = await fetch(otaUrl, { @@ -90,14 +113,9 @@ async function sendOTA(otaUrl, config) { const result = await res.json(); otaStatusStyle(true) - return true; // 成功 + return result; // 返回完整的响应数据 } catch (err) { otaStatusStyle(false) - return false; // 失败 + return null; // 失败返回null } -} - - - - - +} \ No newline at end of file diff --git a/main/xiaozhi-server/test/test_page.html b/main/xiaozhi-server/test/test_page.html index 547f2b31..5c14327c 100644 --- a/main/xiaozhi-server/test/test_page.html +++ b/main/xiaozhi-server/test/test_page.html @@ -133,8 +133,8 @@
- +
@@ -714,7 +714,7 @@ localStorage.setItem('wsUrl', url); try { - const ws = await webSocketConnect(otaUrl, url, config) + const ws = await webSocketConnect(otaUrl, config) if (ws === undefined) { return } @@ -756,7 +756,7 @@ messageInput.disabled = true; sendTextButton.disabled = true; recordButton.disabled = true; - stopButton.disabled = true; + // stopButton.disabled = true; }; websocket.onerror = (error) => { @@ -1049,11 +1049,6 @@ document.getElementById('otaUrl').value = savedOtaUrl; } - const savedWsUrl = localStorage.getItem('wsUrl'); - if (savedWsUrl) { - document.getElementById('serverUrl').value = savedWsUrl; - } - // 切换面板显示 toggleButton.addEventListener('click', () => { const isExpanded = configPanel.classList.contains('expanded');