WebRTC--流程

一些解释

1.WebRTC是浏览器内置的时时通信技术,能让网页直接实现音视频通话、数据传输

2.ICE是WebRTC中让不同网络下的设备能找到彼此的框架

3.STUN是帮助处于NAT(网络地址转换)后的设备(自己的电脑或手机),获取自己的公网IP+端口以及NAT设备的类型,从而让不用NAT后的设备都能找到彼此,建立点对点连接(P2P)

前置:

现在有两个设备A、B,A、B两个设备在不同的内网中,现在A、B是没法通信的,因为A知道B的IP和端口,但不知道自己的IP和端口,B也是一样的,B也不知道自己的IP和端口,但知道A的IP和端口,所以就需要一个STUN服务器

1.A向STUN服务器发送一次请求(请告诉我,你看到的我的IP和端口是多少),服务器就会记录下A的IP和端口,然后将信息返回给A,相当于一次查询(注意:这个源IP是公网IP),B也是一样的:

2.之后A、B通过websocket,把信息沟通一下,然后双方就可以通讯了

注:

(1)STUN服务器作用:帮助处于NAT(网络地址转换)后的设备(比如自己的电脑/手机),获取自己的公网IP+端口

(2)不止有STUN这一个服务器,还有用spring boot搭建的项目(项目是要部署在服务器上的):

3.要进行网络通讯,就要用到WebRTC技术,WebRTC是浏览器内置的,属于浏览器,主要可以实现音视频通话,但是它不支持让两个设备连接,所以要用到ICE(可以理解为WebRTC的子技术),而ICE又用到了STUN服务器

|--------------------------------------------------------------------------------------------------------------------------|
| WebRTC:浏览器原生支持的实时音视频通信技术,实现音视频采集、编码 ICE:是WebRTC中用于解决不同网络下的设备能够找到彼此 STUN服务器:帮助处于NAT(网络地址转换)后的设备(比如自己的电脑/手机),获取 自己的公网IP+端口 |

4.WebSocket是干什么用的

Websocket是配置在服务器端的,保证客户端与服务器端的长链接(不挂电话)(即能够实时通信)

Netty保证IO(输入输出)(通信的可靠性)

通讯流程

1.通讯第一步

A、B先在netty中进行注册,A、B要通讯,首先要在线,在线就是A设备不通过WebRTC,而是通过websocket保持的长链接将自己的信息在netty中进行注册,netty的作用是保证当前用户和IO(就是通道channel)有一个映射关系,B也是同理:

|--------------------------------------------------------------------------------------------------------------------------------------|
| A------>WebSocket连接------>Netty服务器(注册) B------>WebSocket连接------>Netty服务器(注册) 告诉所有人我上线了,不然A、B是通不了话的,他们都需要在map集合中,把自己的用户名和通道关系注册上 |

2.通讯第二步

注册好之后就可以进行通讯了,首先A发起呼叫

呼叫流程:

呼叫之前,A必须要先得到自己的信令,信令里面有自己的公网IP和端口,也就是先从STUN里拿到自己的公网IP和端口,然后通过websocket交给服务器,然后服务器把信令发给你想要呼叫的B:

呼叫

B得到A的信令之后也会把自己的信令发给A

这种时候就可以建立WebRTC连接了

信令交换:相当于"敲门+协商"------告诉对方"我要和你视频""我这边的音视频参数是什么""我的网络地址是什么",由 WebSocket+Netty 负责

协商完成后,直接在两个客户端之间传输音视频数据,不经过服务端中转(P2P),由WebRTC负责

相关推荐
paopaokaka_luck7 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
SL_staff7 小时前
JVS混合架构实践:能力引擎+动态模型如何支撑企业级可持续交付
spring boot·低代码·全栈
迪飞特科技7 小时前
智慧物业平台实战:Spring Boot 整合小程序实现报修巡检费用全流程
spring boot·后端·小程序
考虑考虑7 小时前
@JsonInclude注解使用
spring boot·后端·spring
凤山老林12 小时前
Spring Boot 集成 Redis Stream 做可靠消息队列:持久化、消费组重组与流式处理实战
spring boot·redis·后端
.Hypocritical.13 小时前
SpringBoot+Vue 前后端分离项目部署到云服务器
服务器·vue.js·spring boot
云和数据.ChenGuang14 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整指南
java·人工智能·spring boot·后端·重构·springai
豆角焖肉14 小时前
SpringBoot 集成腾讯 AI 人脸识别
人工智能·spring boot·后端·人脸识别·腾讯 ai·base64 图片
十年Java程序媛15 小时前
Java String、StringBuilder、StringBuffer 底层原理|字符串拼接性能与线程安全
java·开发语言·spring boot·安全·面试
她的男孩15 小时前
升级 Spring Boot 4 后流程起不来、登录却报缺租户:Forge Admin 补上 applicationTaskExecutor 与旧 Sa-Tok
spring boot·安全·工作流引擎