WebRTC 基础概念
WebRTC(Web Real-Time Communication)是浏览器内置的实时通信技术,无需安装插件即可在网页端实现音视频通话和数据传输。要实现这一功能,核心在于解决网络穿透问题,这涉及到两个关键概念:
- ICE:交互式连接建立框架,用于在不同网络环境下找到设备彼此。
- STUN 服务器:帮助处于 NAT(网络地址转换)后的设备获取公网 IP 和端口,相当于告诉设备'你的对外地址是什么'。
简单来说,当两个设备都在内网时,它们不知道对方的公网地址。STUN 服务器就像是一个查号台,设备 A 问它'我的公网地址是多少',拿到后通过信令服务器告诉设备 B,双方就能直接建立 P2P 连接了。
系统架构设计
整个方案基于 WebRTC + Spring Boot + STUN 构建,核心流程如下:
- 信令协商:Spring Boot 服务端作为中介,交换双方的网络信息和通话指令。
- 网络穿透:借助 STUN 服务器获取设备的公网 IP 和端口。
- P2P 直连:协商完成后,WebRTC 建立端到端的直接连接,负责音视频实时传输。
- 长连接保活:通过 WebSocket 维持客户端与服务端的通信通道。

核心实现细节
后端服务搭建
我们使用 Spring Boot 快速搭建框架,Netty 处理高并发 WebSocket 连接。首先配置依赖,Netty 负责网络通信,FastJSON 处理信令格式。
<!-- SpringBoot 核心 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Netty WebSocket 依赖 -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.94.Final
com.alibaba
fastjson
2.0.25

