在现代Web应用中,WebRTC(Web Real-Time Communication)技术为实时通信提供了强大的支持。然而,在实际应用中,网络环境的差异常常会导致WebRTC连接问题。本文将通过一个实际案例,探讨如何在Google Cloud Platform (GCP) VM上运行的WebRTC应用中解决网络连接问题。背景介绍假设我们有一个基于Angular的Web应用,该应用需要从GCP VM上运行的软件获取视频流,并通过WebRTC进行传输。WebRTC的建立依赖于STUN和TURN服务器来解决网络穿透问题。由于GCP VM没有公共IP地址,STUN服务器无法直接使用,我们需要配置TURN服务器来处理复杂的网络环境。问题描述当Web应用在GCP VM本地上运行时,WebRTC连接可以正常建立,视频流传输顺畅。然而,一旦尝试在外部网络上运行该Web应用,连接状态会停留在“connecting”,ICE候选状态为“checking”,最终超时。尝试解决方案使用公共TURN服务器:我们尝试使用一个公共的TURN服务器来解决问题:iceServers=[{