From 1d552a3bad95caae4af15322df28e6240b797693 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Thu, 13 Aug 2026 15:32:06 +0800
Subject: [PATCH] feat: app视频封面图

---
 applications/mobile-web-view/src/appPages/voiceCallDetail/index.vue |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/applications/mobile-web-view/src/appPages/voiceCallDetail/index.vue b/applications/mobile-web-view/src/appPages/voiceCallDetail/index.vue
index 52e2e4e..07e8e20 100644
--- a/applications/mobile-web-view/src/appPages/voiceCallDetail/index.vue
+++ b/applications/mobile-web-view/src/appPages/voiceCallDetail/index.vue
@@ -22,7 +22,7 @@
 				<strong v-if="callEnded" class="status-text ended-status">{{ endMessage }}</strong>
 			</div>
 			<div class="button-group">
-				<button v-if="state === 'idle' && !receiveParameters" @click="requestCall" :disabled="!connected" class="btn btn-call">呼叫</button>
+				<!-- <button v-if="state === 'idle' && !receiveParameters && !callEnded" @click="requestCall" :disabled="!connected" class="btn btn-call">呼叫</button> -->
 
 				<button v-if="state==='ringing'" @click="acceptCall" class="btn btn-accept incoming-accept">接听</button>
 				<button v-if="state==='ringing'" @click="rejectCall" class="btn btn-reject incoming-reject">拒绝</button>
@@ -43,7 +43,8 @@
 const route = useRoute()
 /** ✅ 你的 WS 地址前缀(后面拼 userId) */
 // const WS_BASE = 'ws://218.202.104.82:38201/ws/chat?userId='
-const WS_BASE = 'ws://218.202.104.82:38201/ws/chat'
+// const WS_BASE = 'ws://218.202.104.82:38201/ws/chat'
+const WS_BASE = 'ws://220.177.172.27:8100/webrtc/ws/chat'
 const newUserInfo = ref(null)
 const uid = ref('')
 const peerUid = ref('')
@@ -96,6 +97,7 @@
 			// 解码并解析voiceparams参数
 			const params = JSON.parse(decodeURIComponent(route.query.voiceparams));
 			peerUid.value = String(params.peerUid);
+			contactName.value = params.callerName || '未知联系人'
 			// 如果是来电类型,直接触发来电状态
 			if (params.type === 'incoming') {
 				log('📞 voiceparams检测到来电,直接进入来电状态');
@@ -188,7 +190,14 @@
 
 function createPC() {
 	pc = new RTCPeerConnection({
-		iceServers: [{ urls: 'stun:stun.l.google.com:19302' }],
+		iceServers: [{ urls: 'stun:stun.l.google.com:19302' },
+			{ urls: 'stun:stun.l.google.com:19302' },
+			{ urls: 'stun:stun1.l.google.com:19302' },
+			{ urls: 'stun:stun.stunprotocol.org:3478' },
+			// 添加多个公共TURN服务器以提高跨网络连接成功率
+			{ urls: ['turn:freeturn.net:80', 'turn:freeturn.net:443'], username: 'free', credential: 'free' },
+			// 备用TURN服务器
+			{ urls: 'turn:turn.cloudlifter.io:443', username: 'webrtc', credential: 'webrtc' }],
 	})
 
 	pc.onicecandidate = (e) => {
@@ -448,6 +457,7 @@
 	send('accept', incomingFrom, null)
 	log('✅ 已点击接听,发送 accept 给', incomingFrom)
 
+
 	state.value = 'calling'
 
 	// 如果 offer 已经提前到达(我们暂存了),立刻 answer
@@ -455,6 +465,9 @@
 		answerOffer(lastOfferSdp, incomingFrom)
 		lastOfferSdp = null
 	}
+	// 停止
+	const transmitData = { data: { sign:'closeBox' } }
+	uni.postMessage(transmitData)
 }
 
 function rejectCall() {
@@ -463,6 +476,8 @@
 	// 你后端没有 reject,用 busy 表示拒绝/不可接听
 	send('busy', incomingFrom, null)
 	log('❌ 已拒绝来电,发送 busy 给', incomingFrom)
+	const transmitData = { data: { type: 'hangupVoice',sign:'closeBox'  } }
+uni.postMessage(transmitData)
 
 	incomingFrom = null
 	acceptedByMe = false
@@ -514,6 +529,9 @@
 }
 
 function hangup() {
+	// 停止铃声
+// 	const transmitData = { data: { type: 'stopVoice' } }
+// uni.postMessage(transmitData)
 	cleanup(true)
 }
 
@@ -562,11 +580,14 @@
 		} else {
 			log('❌ uni对象不存在,无法返回上一页')
 		}
+		const transmitData = { data: { type: 'hangupVoice' } }
+		uni.postMessage(transmitData)
 	} else {
 		// 对方挂断:显示提示,延迟10秒跳转
 		callEnded.value = true
 		endMessage.value = '对方已挂断'
-
+		const transmitData = { data: { type: 'hangupVoice',sign:'closeBox'  } }
+		uni.postMessage(transmitData)
 		// 延迟5秒后跳转页面
 		endTimer.value = setTimeout(() => {
 			// 返回上一页(uni-app的语音通话列表页面)
@@ -575,9 +596,10 @@
 			} else {
 				log('❌ uni对象不存在,无法返回上一页')
 			}
+
 			// 重置通话结束状态
 			callEnded.value = false
-		}, 5000)
+		}, 2000)
 	}
 }
 

--
Gitblit v1.9.3