From 52a3f13f1eaee4b2ff4473542712e360777f138c Mon Sep 17 00:00:00 2001 From: RockYang Date: Sat, 12 Oct 2024 19:07:29 +0800 Subject: [PATCH] add voice chat test case --- web/package-lock.json | 54 ++++-- web/package.json | 1 + web/src/components/FileSelect.vue | 5 +- web/src/views/Test.vue | 271 +++++++++++++++++++++++++++++- web/src/views/Test1.vue | 110 ++++++++++++ 5 files changed, 421 insertions(+), 20 deletions(-) create mode 100644 web/src/views/Test1.vue diff --git a/web/package-lock.json b/web/package-lock.json index 92bf98f4..5ff1a255 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "@element-plus/icons-vue": "^2.1.0", + "@openai/realtime-api-beta": "github:openai/openai-realtime-api-beta", "axios": "^0.27.2", "clipboard": "^2.0.11", "compressorjs": "^1.2.1", @@ -27,7 +28,6 @@ "markmap-view": "^0.16.0", "md-editor-v3": "^2.2.1", "memfs": "^4.9.3", - "mitt": "^3.0.1", "pinia": "^2.1.4", "qrcode": "^1.5.3", "qs": "^6.11.1", @@ -2022,6 +2022,33 @@ "node": ">= 8" } }, + "node_modules/@openai/realtime-api-beta": { + "version": "0.0.0", + "resolved": "git+ssh://git@github.com/openai/openai-realtime-api-beta.git#339e9553a757ef1cf8c767272fc750c1e62effbb", + "dependencies": { + "ws": "^8.18.0" + } + }, + "node_modules/@openai/realtime-api-beta/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@polka/url": { "version": "1.0.0-next.21", "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz", @@ -8769,11 +8796,6 @@ "node": ">=8" } }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" - }, "node_modules/mj-context-menu": { "version": "0.6.1", "resolved": "https://registry.npmmirror.com/mj-context-menu/-/mj-context-menu-0.6.1.tgz", @@ -14196,6 +14218,21 @@ "fastq": "^1.6.0" } }, + "@openai/realtime-api-beta": { + "version": "git+ssh://git@github.com/openai/openai-realtime-api-beta.git#339e9553a757ef1cf8c767272fc750c1e62effbb", + "from": "@openai/realtime-api-beta@github:openai/openai-realtime-api-beta", + "requires": { + "ws": "^8.18.0" + }, + "dependencies": { + "ws": { + "version": "8.18.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "requires": {} + } + } + }, "@polka/url": { "version": "1.0.0-next.21", "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz", @@ -19700,11 +19737,6 @@ "yallist": "^4.0.0" } }, - "mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" - }, "mj-context-menu": { "version": "0.6.1", "resolved": "https://registry.npmmirror.com/mj-context-menu/-/mj-context-menu-0.6.1.tgz", diff --git a/web/package.json b/web/package.json index 984ca9b5..74c864cf 100644 --- a/web/package.json +++ b/web/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.1.0", + "@openai/realtime-api-beta": "github:openai/openai-realtime-api-beta", "axios": "^0.27.2", "clipboard": "^2.0.11", "compressorjs": "^1.2.1", diff --git a/web/src/components/FileSelect.vue b/web/src/components/FileSelect.vue index 83e7d937..fc59da5a 100644 --- a/web/src/components/FileSelect.vue +++ b/web/src/components/FileSelect.vue @@ -70,7 +70,6 @@ const props = defineProps({ }); const emits = defineEmits(['selected']); const show = ref(false) -const fileList = ref([]) const scrollbarRef = ref(null) const fileData = reactive({ items:[], @@ -116,7 +115,7 @@ const afterRead = (file) => { formData.append('file', file.file, file.name); // 执行上传操作 httpPost('/api/upload', formData).then((res) => { - fileList.value.unshift(res.data) + fileData.items.unshift(res.data) ElMessage.success({message: "上传成功", duration: 500}) }).catch((e) => { ElMessage.error('图片上传失败:' + e.message) @@ -125,7 +124,7 @@ const afterRead = (file) => { const removeFile = (file) => { httpGet('/api/upload/remove?id=' + file.id).then(() => { - fileList.value = removeArrayItem(fileList.value, file, (v1, v2) => { + fileData.items = removeArrayItem(fileData.items, file, (v1, v2) => { return v1.id === v2.id }) ElMessage.success("文件删除成功!") diff --git a/web/src/views/Test.vue b/web/src/views/Test.vue index b29761ad..6bac1ba5 100644 --- a/web/src/views/Test.vue +++ b/web/src/views/Test.vue @@ -1,16 +1,275 @@ + + \ No newline at end of file diff --git a/web/src/views/Test1.vue b/web/src/views/Test1.vue new file mode 100644 index 00000000..db588902 --- /dev/null +++ b/web/src/views/Test1.vue @@ -0,0 +1,110 @@ + + +