获取index
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2m55s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2m55s
				
			This commit is contained in:
		
							parent
							
								
									0478bb4cdd
								
							
						
					
					
						commit
						bc79ccb601
					
				
							
								
								
									
										60
									
								
								src/index.js
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								src/index.js
									
									
									
									
									
								
							| @ -65,8 +65,8 @@ class WebRTCChat { | ||||
| 
 | ||||
|         console.log('WebRTC 聊天应用初始化完成'); | ||||
|          | ||||
|         this.initializeElements(); | ||||
|         this.initializeSocket(); | ||||
|         this.initializeElements(); | ||||
|         this.loadVideoMapping(); | ||||
|         this.loadVideoList(); | ||||
|          | ||||
| @ -75,12 +75,12 @@ class WebRTCChat { | ||||
|         this.bindEvents(); | ||||
| 
 | ||||
|         // 在初始化完成后预加载常用视频
 | ||||
|         setTimeout(() => { | ||||
|             this.logMessage('开始预加载常用视频...', 'info'); | ||||
|             this.preloadCommonVideos().catch(error => { | ||||
|                 this.logMessage(`预加载过程出错: ${error.message}`, 'error'); | ||||
|             }); | ||||
|         }, 500); | ||||
|         // setTimeout(() => {
 | ||||
|         //     this.logMessage('开始预加载常用视频...', 'info');
 | ||||
|         //     this.preloadCommonVideos().catch(error => {
 | ||||
|         //         this.logMessage(`预加载过程出错: ${error.message}`, 'error');
 | ||||
|         //     });
 | ||||
|         // }, 500);
 | ||||
| 
 | ||||
|         // 预创建重要视频流
 | ||||
|         setTimeout(() => { | ||||
| @ -427,7 +427,7 @@ class WebRTCChat { | ||||
|     async precreateImportantVideos() { | ||||
|         if (this.isInitialized) return; | ||||
|          | ||||
|         this.logMessage('开始预创建重要视频流...', 'info'); | ||||
|         console.log('开始预创建重要流...', 'info'); | ||||
|          | ||||
|         for (const videoFile of [this.interactionVideo, this.defaultVideo]) { | ||||
|             try { | ||||
| @ -438,13 +438,14 @@ class WebRTCChat { | ||||
|                 this.logMessage(`预创建视频流失败: ${videoFile} - ${error.message}`, 'error'); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         this.isInitialized = true; | ||||
|         // 启用开始通话按钮
 | ||||
|             if (this.startButton) { | ||||
|                 this.startButton.disabled = false; | ||||
|                 this.startButton.style.opacity = '1'; | ||||
|             } | ||||
|          | ||||
|         this.isInitialized = true; | ||||
|          | ||||
|         this.logMessage('重要视频流预创建完成', 'success'); | ||||
|     } | ||||
| 
 | ||||
| @ -1158,6 +1159,7 @@ class WebRTCChat { | ||||
|             await this.startVoiceRecording(); | ||||
|              | ||||
|             this.startButton.disabled = true; | ||||
|             this.startButton.style.opacity = '0.5' | ||||
|             this.stopButton.disabled = false; | ||||
|              | ||||
|             // 显示结束通话按钮
 | ||||
| @ -1182,7 +1184,7 @@ class WebRTCChat { | ||||
|             this.socket.emit('call-started'); | ||||
|              | ||||
|             // 开始播放当前场景的默认视频
 | ||||
|             await this.precreateImportantVideos(); | ||||
|             // await this.precreateImportantVideos();
 | ||||
| 
 | ||||
|             // 隐藏等待连接提示
 | ||||
|             this.hideConnectionWaiting(); | ||||
| @ -1242,9 +1244,9 @@ class WebRTCChat { | ||||
|         } | ||||
|          | ||||
|         // 显示开始通话按钮
 | ||||
|         this.startButton.disabled = false; | ||||
|         this.startButton.disabled = true; | ||||
|         this.startButton.style.display = 'block'; | ||||
|         this.startButton.style.opacity = '1'; | ||||
|         this.startButton.style.opacity = '0.5'; | ||||
|          | ||||
|         // 移除页面刷新,保持websocket连接
 | ||||
|         // setTimeout(() => {
 | ||||
| @ -1273,16 +1275,36 @@ class WebRTCChat { | ||||
|         // 发送用户关闭连接事件到后端
 | ||||
|         if (this.socket && this.socket.connected) { | ||||
|             this.socket.emit('user-disconnect'); | ||||
|              | ||||
|             // 等待服务器确认断开后再刷新
 | ||||
|             this.socket.on('disconnect', () => { | ||||
|                 console.log('WebSocket已断开,准备刷新页面...'); | ||||
|                 setTimeout(() => { | ||||
|                     window.location.reload(); | ||||
|                 }, 500); | ||||
|             }); | ||||
|              | ||||
|             // 主动断开连接
 | ||||
|             setTimeout(() => { | ||||
|                 this.socket.disconnect(); | ||||
|             }, 200); | ||||
|              | ||||
|             // 兜底机制:如果2秒内没有正常断开,强制刷新
 | ||||
|             setTimeout(() => { | ||||
|                 if (this.socket && this.socket.connected) { | ||||
|                     console.log('WebSocket断开超时,强制刷新页面'); | ||||
|                     window.location.reload(); | ||||
|                 } | ||||
|             }, 2000); | ||||
|         } else { | ||||
|             // 如果socket已经断开,直接刷新
 | ||||
|             setTimeout(() => { | ||||
|                 window.location.reload(); | ||||
|             }, 100); | ||||
|         } | ||||
|          | ||||
|         // 调用停止通话
 | ||||
|         this.stopCall(); | ||||
|          | ||||
|         // 延迟刷新,确保服务器处理完断开逻辑
 | ||||
|         console.log('用户主动断开,300ms后刷新页面清除缓存...'); | ||||
|         setTimeout(() => { | ||||
|             window.location.reload(); | ||||
|         }, 100); | ||||
|     } | ||||
| 
 | ||||
|     // 清除视频缓存的方法
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Song367
						Song367