美文网首页
WebRtc创建点对点的连接 能看到对方画面的那种

WebRtc创建点对点的连接 能看到对方画面的那种

作者: Smallwolf_JS | 来源:发表于2019-07-11 19:08 被阅读0次

    首先可以先去熟悉一下webrtc的协议和创建链接过程
    两台手机要想进行p2p通话,首先要通过webSocket进行交互sdp和ice
    我创建的demo是采用skyrtc的server,然后使用webSocket(注意这里不是socket,这是两个不同的协议,虽然底层原理一样)

    连接过程
    • 首先ClientA和ClientB均通过双向通信方式如WebSocket连接到Signaling Server上;

    • ClientA在本地首先通GetMedia访问本地的media接口和数据,并创建PeerConnection对象,调用其AddStream方法把本地的Media添加到PeerConnection对象中。对于ClientA而言,既可以在与Signaling Server建立连接之前就创建并初始化PeerConnection如阶段1,也可以在建立Signaling Server连接之后创建并初始化PeerConnection如阶段2;ClientB既可以在上图的1阶段也可以在2阶段做同样的事情,访问自己的本地接口并创建自己的PeerConnection对象。

    • 通信由ClientA发起,所以ClientA调用PeerConnection的CreateOffer接口创建自己的SDP offer,然后把这个SDP Offer信息通过Signaling Server通道中转发给ClientB;

    • ClientB收到Signaling Server中转过来的ClientA的SDP信息也就是offer后,调用CreateAnswer创建自己的SDP信息也就是answer,然后把这个answer同样通过Signaling server转发给ClientA;

    • ClientA收到转发的answer消息以后,两个peers就做好了建立连接并获取对方media streaming的准备;

    • ClientA通过自己PeerConnection创建时传递的参数等待来自于ICE server的通信,获取自己的candidate,当candidate available的时候会自动回掉PeerConnection的OnIceCandidate;

    • ClientA通过Signling Server发送自己的Candidate给ClientB,ClientB依据同样的逻辑把自己的Candidate通过Signaling Server中转发给ClientA;

    • 至此ClientA和ClientB均已经接收到对方的Candidate,通过PeerConnection建立连接。至此P2P通道建立。

    通信过程中的基本概念:
    • Room:Signaling Server使用Room的概念对同一组通信的peers进行配对管理,一个room中包含有1个或者多个peers。当没有peers存在时room销毁;当第一个peer连接到signaling server时执行create room动作,此时因为没有其他 peers,建立room的这个peer不与其他节点建立P2P通信;其他peers随后加入room,加入room后会主动与room已经存在的peer建立连接;

    *Offer:主动与其他peer建立P2P链接的peer把自己的SDP信息整理好,通过signaling server转发给room里面的其他peer,这个SDP信息包就是Offer;

    *Answer:被动连接的Peer在收到signaling server转发的其他peer的offer信息以后,也把自己的SDP信息整理好,同样通过signaling server转发给主动连接它的peer,他自己的SDP信息包就是Answer;

    *IceCandidate:Peer与ICE/TURN/STUN Server直接建立连接,获取自己的NAT类型以及外网IP和端口,这些ICE/TURN/STUN Server返回的消息就是IceCandidate或者直接简称Candidate;

    其他

    webrtc的编译网上一大堆,就不多赘述了,而且还有cocoapods的方式集成
    pod GoogleWebrtc(这种方式默认不支持bitcode)或者去github上找其他人编译好的库文件(这种方式版本不一)

    我找到的webrtc的库链接:https://pan.baidu.com/s/1J3oXBH14G4xfHHopNKHXcQ 密码:wnph

    下载下来之后拷贝到WebScoketTest工程中
    期间需要执行pod install
    安装本地node环境,cd到SkyRTC-demo-master目录下执行node server.js

    相关文章

      网友评论

          本文标题:WebRtc创建点对点的连接 能看到对方画面的那种

          本文链接:https://www.haomeiwen.com/subject/mwzdkctx.html