WebRTC服务器:不全是点对点

关注微信公众号(瓠悠笑软件部落),一起学习,一起摸鱼
huyouxiao.com
视频地址

Types of WebRTC servers

  • Signaling 信令 Always needed
  • NAT Traversal 内网穿透 Needed for production
  • Media 多媒体 Depends on the app
  • Gateway 网关 Depends on the app
Signaling

WebRTC is peer-to-peer for media, but WebRTC is not peer-to-peer for Signaling.

Session Description Protocol (SDP)

WebRTC使用会话描述协议(SDP)来协商媒体参数
Session Description Protocol
样例展示

Server

简单的 Socket.io server:

  • 只有32行
  • 没有逻辑,它只转发 messages

webRTC github地址
sending webRTC via avian carrier, which means a bird, a pigeon, a passenger pigeon.

var socketIO = requrie('socket.io');
var server = require('http').createServer().listen(7000, '0.0.0.0');
var io = socketIO.listen(server);

// Super simple server:
// * On room only.
// * We expect two people max.
// * No error handling.

io.sockets.on('connection', function (client) {
   console.log('new connection: ' + client.id);
   
   client.on('offer', function (details) {
      client.broadcast.emit('offer', details);
      console.log('offer:' + JSON.stringify(details));     
  });
 
  client.on('answer', function (details) {
     client.broadcast.emit('answer', details);
     console.log('answer: ' + JSON.stringify(details));
  });

 client.on('candidate', function (details) {
    client.broadcast.emit('candidate', details);
    console.log('candidate: ' + JSON.stringify(details));
 });

// Here starts evertying!
// The first connection doesn't send anything (no other clients)
// Second connection emits the message to start the SDP negotation
client.broadcast.emit('createoffer', {});
});

有个叫fippo 的黑客,有一些很炫的东东

Signaling considerations outside of webRTC
  • user authentication
  • Security & access controls
  • mobile environments. 程序不能太耗电,信令通信不能太繁琐,保持通话状态,保持网络唤醒。想办法推送通知服务消息。
  • 通话人数的扩增。

如何 获取/使用 一台 signaling server

  • Ask your CPaas provider all include signaling eg: Twilio TokBox
  • Run your own write your own in node.js Matrix.org EasyRTC SimpleWebRTC
  • Use a messaging service eg: Firebase PubNub Pusher GCM, Google Cloud Messager

NAT Traversal

NAT Traversal firewalls.
The NAT problem
信令需要通过Signaling Server 进行传输.  WebRTC media 是不需要通过Signaling Server 进行forward传输的。
The NAT problem2

Interactive Connectivity Establishment(ICE)

A protocol for establishing a peer-to-peer media connection between peers behind NAT and firewall devices.

Two types of ICE servers
  • STUN
    session Traversal Utilities for NAT
  • TURN
    Traversal using Relay NAT a relay server

STUN 告诉你,你的公网IP地址是多少。

Comparing STUN vs. TURN

Comparing STUN vs. TURN
STUN 和 TURN 的使用情况统计, 大约24%的情况需要用到TURN.
Relays

example iceServers object

iceServers object

ICE candidate protocols
  • UDP
  • TCP
  • TLS over TCP
    ICE candidate protocols
Types of TURN

Types of TURN

ICE Candidate Types
  • host local address
  • srflx address from STUN server
  • relay addre of TURN server
Where to test TURN
Distribute geographically for improved performance & redundancy

可以在不同的地区建立 TURN server 云服务
distribute TURN servers

media servers

reasons you might need a media server
  • Multi-party
  • Recording
  • Heavy media manipulation
  • broadcasting

The Mesh Problem

参与会话的 Peer 需要给其他所有的Peer 发送数据,这带来了CPU和带宽的消耗。特别是参与的Peer数量增加的时候。
The Mesh Problem
参与 call 的 Peer数量是 n. 那么每个Cient的 Streams/client 的数量是 2(n-1), 总计n*n-n
The Mesh Problem

Mulipoint Control Unit 多方控制单元

Multipoint Control Unit
MCU 的优点和缺点
Multipoint Control Unit

MCU Issue: Choosing the Layout
https://freeswitch.org/confluence/display/FRESSWITCH/FreeSWITCH+1.6+Video

Selective Forwarding Unit (SFU)

SFU
有N个 Peer(client) 参与 Call, 每一个Peer的stream链接数是N,总共有n*n个链接.
SFU clients

SFU with Simulcast

SFU with Simulcast

Simulcast

Simulcast

How to get/use media server
  • Ask your CPaaS provider only some support media servers
  • Open source
    • Jitsi Video Bridge
    • Kurento
    • Janus
    • Licode
    • Freeswitch
  • Commercial software/hardware
WebRTC Gateways

not for browser-to-browser,it’s browser to something else
Gateways
Gateways adapt signaling & media
需要做一些视频编码转换,信令协议转换。因为WebRTC 并没有直接定义信令协议。他只要求你需要使用一种信令协议,通过 offer-answer mechanism. 如何将 SDP 从一端传送到另外一端. 无论你使用哪一种 signaling mechanism. 你需要一种方法,将它转换成通信行业里面的标准协议,比如SIP.

WebRTC Server Considerations

WebRTC Server Considerations
源视频地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值