-
安装Node.js
-
进入项目根目录,命令行:npm install
-
命令行:node app.js
-
打开浏览器输入127.0.0.1:3000,见到WebRtcServer标题,服务器ready
1、下载后直接AndroidStudio打开
2、将WebRtcClient.java类中的mSocketAddress变量改成你服务器的ip端口3000
3、安装后启动App,如果服务器log显示-- xxxxx joined --证明客户端已连上服务器
4、至少两个客户端连接到服务器之后,其中一端点击init开始连接
如果你已经成功跑通了Demo,那么恭喜你已经成功了一半,接下来我们分析下实现流程。
实现流程
一、添加WebRTC库依赖
compile ‘org.webrtc:google-webrtc:1.0.+’
二、初始化核心类PeerConnectionFactory
PeerConnectionFactory.initialize(PeerConnectionFactory
.InitializationOptions
.builder(this)
.createInitializationOptions());
三、创建PeerConnection对象
peerConnection = factory.createPeerConnection(
iceServers, //ICE服务器列表
constraints, //MediaConstraints
this); //Context
四、建立P2P连接通道
WebRTC是基于P2P的,但在端与端之间的连接通道还没建立起来之前,我们需要通过一个信令服务器为端与端之间传递信令建立通道。信令服务器要做的东西很简单,就是将一端的信息透传给另一端,步骤如下(以Demo为例):我们启动A端与B端,通过SocketIO连接到信令服务器,我们以A作为发送端,B为响应端。
信令交换
-
A向服务器发出init请求
-
服务器将A的init请求转发给连接上服务器的其他端
-
B收到init请求后,调用peerConnection.createOffer()方法创建一个包含SDP的offer信令
-
offer信令创建成功后会调用SdpObserver监听中的onCreateSuccess()响应函数,在此处B通过peerConnection.setLocalDescription()方法将SDP赋予自己的PeerConnection对象,同时将offer信令发送给服务器
服务器将offer信令转发给A端
- A收到offer信令后,调用peerConnection.setRemoteDescription()方法将B发过来的SDP赋予自己的PeerConnection对象,并调用peerConnection.createAnswer()方法创建一个answer信令
answer信令创建成功后同样会调用SdpObserver监听中的onCreateSuccess()响应函数,在此处A同样通过peerConnection.setLocalDescription方法将SDP赋予自己的PeerConnection对象,同时将answer信令发送给服务器
- 服务器将answer信令转发给B端
B收到A的answer信令后,利用peerConnection.setRemoteDescription()方法将A发过来的SDP赋予自己的PeerConnection对象
- 设置Candidate
PeerConnection.Observer监听会调用onIceCandidate()响应函数并提供IceCandidate对象。然后将IceCandidate对象组成candidate信令发送给服务器
- 服务器将candidate信令转发给连接上服务器的其他端
收到candidate信令后调用peerConnection.addIceCandidate()将IceCandidate赋予自己的PeerConnection对象
至此Peer-to-Peer的连接已经建立起来了
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频**
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-4kmXwvDt-1710869017975)]