RTCPeerConnection的作用是在浏览器之间建立数据的“点对点”(peer to peer)通信.
使用WebRTC的编解码器和协议做了大量的工作,方便了开发者,使实时通信成为可能,甚至在不可靠的网络,
比如这些如果在voip体系下开发工作量将非常大,而用webRTC的js开发者则不用考虑这些,举几个例子:
不同客户端之间的音频/视频传递,是不用通过服务器的。但是,两个客户端之间建立信令联系,需要通过服务器。这个和XMPP的Jingle会话很类似。
服务器主要转递两种数据。
WebRTC协议没有规定与服务器的信令通信方式,因此可以采用各种方式,比如WebSocket。通过服务器,两个客户端按照Session Description Protocol(SDP协议)交换双方的元数据。
本地和远端通讯的过程有些像电话,比如张三正在试着打电话给李四,详细机制:
SDP详解:
https://datatracker.ietf.org/doc/draft-nandakumar-rtcweb-sdp/?include_text=1
bitbucket的一步一步实验,动手代码
https://bitbucket.org/webrtc/codelab
WebSocket简介(用于信令通信)
https://dzone.com/refcardz/html5-websocket
http://www.infoq.com/articles/Web-Sockets-Proxy-Servers
信令服务或开源webRTC框架
https://easyrtc.com/products/easyrtc-opensource
https://github.com/priologic/easyrtc
https://github.com/andyet/signalmaster
如果您一行代码都不想写,可以看看 vLine, OpenTok and Asterisk.
这里有一个单页应用程序。本地和远程的视频在一个网页,RTCPeerConnection objects 直接交换数据和消息。
https://webrtc.github.io/samples/src/content/peerconnection/pc1/
HTML代码:
<!DOCTYPE html>
<html>
<head>
……
</head>
<body>
<h1\><a href\="//webrtc.github.io/samples/" title\="WebRTC samples homepage"\>WebRTC samples</a\> <span\>Peer connection</span\></h1\>
<video id\="localVideo" autoplay muted\></video\>
<video id\="remoteVideo" autoplay\></video\>
<div\>
<button id\="startButton"\>Start</button\>
<button id\="callButton"\>Call</button\>
<button id\="hangupButton"\>Hang Up</button\>
</div\>
</div>