最近一直在研究webrtc的相关工作,在这里也直接坐下记录。
什么是WebRtc
主要内容
- webrtc的原理
- webrtc在服务器端上的实现
- webrtc在android端上的实现
webrtc的原理
webrtc在服务器端上的实现
在服务器端上的实现我们又可以分为两部分
- webrtc在web上的实现
- webrtc在后端的实现
webrtc在web上的实现
从上面的图片中我们可以看出来,对于web上实现最大的问题还是浏览器的支持,下面是支持webrtc的浏览器
从上面我们看到其实支持的浏览器还是比较少的,至于IE,Safari是打算做自己的WebRtc标准,当然这只 是“小道消息”。
对于页面显示我们要借助与HTML5的Video标签
<div class="video_box">
<video id="mini" muted="true" autoplay="autoplay" width='192'height='144'></video>
<div id="videos" >
</div>
</div>
Webrtc在web上主要用到下面几个API:
- PeerConnection
- RTCSessionDescription
- getUserMedia
这三种API在不同浏览器中是不同的赋值方式,详情可参阅官方API
webrtc在服务器中的实现
var stunServer = require('stunsrv').createServer();
stunServer.setAddress0("127.0.0.1");
stunServer.setAddress1('0.0.0.0'); //外网IP
stunServer.setPort0(9001);
stunServer.setPort1(9001);
stunServer.listen();
它的功能就是用于穿透路由器,比如在不同网段中聊天,我们首先要确定其在哪个公网ip,然后需要知道是在这个公网ip路由下的哪个本地ip,然后才能进行连接。
Socket:
socket主要由下面几个功能:
- 实现用户跟服务器之间的持续连接
- 告诉用户除了你还有谁
- 告诉用户与你要建立连接的用户所处的状态
通过以上几个功能便能实现用户p2p交流的基本功能了。