中继(relay)
在RTCPeeConnection中,使用ICE框架来保证RTCPeerConnection能实现NAT穿越
ICE,全名叫交互式连接建立(Interactive Connectivity Establishment),一种综合性的NAT穿越技术,它是一种框架,可以整合各种NAT穿越技术如STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越); 、TURN(Traversal Using Relay NAT 中继NAT实现的穿透)。ICE会先使用STUN,尝试建立一个基于UDP的连接,如果失败了,就会去TCP(先尝试HTTP,然后尝试HTTPS),如果依旧失败ICE就会使用一个中继的TURN服务器。
STUN协议可以很好的解决一般家用(NAT)路由器环境的打洞问题,但是对于大部分的企业的网络环境就不是很好了.这时需要一个新的解决方案:TURN,  TURN是一个Client-Server协议
ICE协议就是综合前面2种协议的综合性NAT穿越解决方案.
DataChannel是建立在PeerConnection上的,不能单独使用
尽管WebRTC允许点对点的通信,但它依然需要服务器:
* 信令传输:建立点对点的连接需要传输一些媒体和网络相关的元数据信息,需要通过服务器
* NAT和防火墙穿透:我们需要通过ICE框架来建立点与点之间的网络路径。可以使用STUN服务器(确定双方的可公开访问你的IP地址和端口)以及TURN服务器(如果直接连接失败,就必须数据中继了)

docker run -it --name apprtc -d -p 8080:8080 -p 8443:8443 -p 8081:80 -p 443:443 ubuntu /bin/bash
工具:
apt-get update
apt-get -y install autoconf automake build-essential libtool wget git vim unzip
Google_App_Engine',
                   WSS_INSTANCE_NAME_KEY: 'wsserver-std',
                   WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
                  }, {
                   WSS_INSTANCE_HOST_KEY: '192.168.214.129:8089',
                   WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
                   WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
            }]
ICE_SERVER_BASE_URL
执行npm install命令安装项目依赖的库,解压压缩包到当前项目的node_modules目录。
再执行下面命令编译出apprtc这个GAE app.
grunt build
编译之后会多出out目录
max-port=65000
  • Change WSS_INSTANCE_HOST_KEY to the hostname and port .
mv /usr/local/share/examples/turnserver/etc/turnserver.conf /etc/turnserver.conf
turnserver -L <public_ip_address> -a -f -r <realm-name>
Or, start it as a daemon with:
$ turnserver -L <public_ip_address> -o -a -f -r <realm-name>
-L, --listening-ip Listener IP address of relay server.
Multiple listeners can be specified, for example:
-L ip1 -L ip2 -L ip3
If no IP(s) specified, then all IPv4 and
IPv6 system IPs will be used for listening.
The same ip(s) can be used as both listening and relay ip(s).
-a, --lt-cred-mech Use long-term credentials mechanism (this one you need for WebRTC usage).
-f, --fingerprint Use fingerprints in the TURN messages. If an incoming request
contains a fingerprint, then TURN server will always add
fingerprints to the messages in this session, regardless of the
per-server setting.
-r, --realm The default realm to be used for the users when no explicit
origin/realm relationship was found in the database, or if the TURN
server is not using any database (just the commands-line settings
and the userdb file). Must be used with long-term credentials
mechanism or with TURN REST API.
-o, --daemon Run server as daemon.
参考:
user=jalon:0xa9f776c6470bab44567b2584863e7345 是通过
# $ turnadmin -k -u jalon -r north.gov -p jalon # Output: 0xa9f776c6470bab44567b2584863e7345 生成的
参考:
新: http://io.diveinedu.com/2016/03/18/WebRTC之AppRTC与信令服务器构建.html
需要自己实现coTurn连接信息接口,主要返回用户名、密码和turn配置信息,通常叫做TURN REST API,不实现这个接口的话AppRTCDemo连不上服务器,浏览器访问的话可以正常访问。
 TURN REST API 标准参考文档
返回json结果示例:
       {"username":"1456904882:1231244","password":"jAph7EHMLuPJuxLLC1uRiI3kvq4=","ttl":86400,"uris":["turn:192.168.214.129:3478?transport=udp","turn:192.168.214.129:3478?transport=tcp","turn:192.168.214.129:3479?transport=udp","turn:192.168.214.129:3479?transport=tcp"]}

p2p webrtc服务器搭建系列1: 房间,信令,coturn打洞服务器的更多相关文章

  1. NFS服务器搭建——可用于共享文件或负载均衡文件共享服务器使用

    一.软件包安装 yum -y install nfs-utils  rpcbind 二.服务器端配置共享目录 1. 在服务器上创建NFS共享目录:mkdir /usr/local/test 2. 设置 ...

  2. IIS6.0服务器搭建网站无法访问解决方法

    IIS6.0服务器搭建网站无法访问解决方法     IIS6.0服务器搭建网站无法访问解决方法很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的, ...

  3. Linux笔记③(ftp、nfs、ssh服务器搭建)

    1.ftp服务器搭建(利用vsftpd这个工具) 作用:文件的上传和下载 服务器端: 修改配置文件,配置文件目录:/etc/vsftpd.conf ,修改里面的允许匿名访问.指定匿名访问目录等操作,根 ...

  4. WebRTC信令控制简介与STUN, TURN服务器搭建

    本文将向大家介绍两个方面的知识: WebRTC信令控制 STUN/TURN服务器的搭建 在前面的文章中已经向大家介绍了如何构建信令服务器.但构建的信令服务器是如何工作的?哪些消息需要信令服务器控制和中 ...

  5. WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建

    WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建 四月 4, 2019 作者:李超,音视频技术专家.本文首发于 RTC 开发者社区,欢迎在社区留言与作者交流. htt ...

  6. (转)WebRTC信令控制与STUN/TURN服务器搭建

    转:https://rtcdeveloper.com/t/topic/13742 本文将向大家介绍两个方面的知识: WebRTC信令控制 STUN/TURN服务器的搭建 在前面的文章中已经向大家介绍了 ...

  7. 服务器环境搭建系列(四)-mysql篇

    1.按照上一篇服务器环境搭建系列(三)-JDK篇中的方法检查系统是否已经预装Mysql并卸载. 2.下载mysql,这里是MySQL-server-5.5.25-1.linux2.6.x86_64.r ...

  8. [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis

    上一章 [ 搭建Redis本地服务器实践系列一 ] :图解CentOS7安装Redis 详细的介绍了Redis的安装步骤,那么只是安装完成,此时的Redis服务器还无法正常运作,我们需要对其进行一些配 ...

  9. [ 搭建Redis本地服务器实践系列一 ] :图解CentOS7安装Redis

    上一章 [ 搭建Redis本地服务器实践系列 ] :序言 作为开场白介绍了下为什么要写这个系列,从这个章节我们就开始真正的进入正题,开始搭建我们本地的Redis服务器.那么关于Redis的基本概念,什 ...

随机推荐

  1. boost 库的下载和编译_Visual Studio 2013(转)

    原文转自 http://blog.csdn.net/lp310018931/article/details/47791143 原文转自 http://m.blog.csdn.net/article/d ...

  2. UVALive 6514:Crusher’s Code(概率dp)

    题目链接 https://icpcarchive.ecs.baylor.edu/external/65/6514.pdf 题意:给出n个数(n<8) 求这n个数分别两个程序排成有序时,程序的期望 ...

  3. hadoop(三)HDFS 文件系统

    Hadoop 附带了一个名为 HDFS(Hadoop 分布式文件系统)的分布式文件系统,专门 存储超大数据文件,为整个 Hadoop 生态圈提供了基础的存储服务. 本章内容: 1) HDFS 文件系统 ...

  4. C# .NET4.0 改为 到.NET2.0 时 TypedTableBase 报错解决方法

    .NET 4.0 降版本 到.NET 2.0.不出意外,问题必然来了. 编译错误一: 错误 1 命名空间“System”中不存在类型或命名空间名称“Linq”(是缺少程序集引用吗?)解决: 删掉该引用 ...

  5. Codeforces 509E(思维)

                                                                                                         ...

  6. Best Cow Fences

    题目描述 Farmer John's farm consists of a long row of N (1 <= N <= 100,000)fields. Each field cont ...

  7. java 读写操作

    java代码: 写入: public void getNotice(HttpServletRequest request, String notice){ String message = JSON. ...

  8. 设计模式(1)---Factory Pattern

    针对的问题:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行. 第一步:创建接口 //创建一个接口 public interface Shape { pu ...

  9. codeigniter视图

    怎么加载视图? 例如我们有一个视图在 application/views/welcome.php public function index() { $this->load->view(' ...

  10. 【hibernate】hibernate不同版本的命名策略

    ===================================================hibernate 4命名策略如下================================ ...