Web-RTC Turn测试

当不同的NAT时,Stun协议不能建立端对端连接,这时需要使用Stun的升级版,Turn或Coturn,这里介绍Turn

正文:
这段时间一直在写一个TURN(RFC5766)协议的客户端软件,用的是C++。虽然参考了一些开源的程序,但也有很多的波折。STUN/TURN/ICE相关的协议有好几个,后来也发现这些协议之间都是既有联系又有区别,也是这个原因让我多耗了不少时间,我想更好的方式不仅是从协议原文出发,也要参考其它产品的交互是怎么样的,这里把自己的一些心得记述下来。

首先 ,寻找一个TURN的服务器。公共的STUN服务器是很多了,但公共的TURN服务器看起来不多,以下这个是测试可用的 http://numb.viagenie.ca/ ,这个网站提供了账户的注册,你可以注册一个账户和密码。

其次 ,寻找一个TURN的客户端,用以观察其与TURN Server之间的交互过程。我用的是 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 测试可用,它本身自带了一个公共的STUN的服务器地址,可以将其删除,并添加一个我们申请到的TURN Server的地址。URI是turn:numb.viagenie.ca
TURN Server的设置

第三步,用wireshark来做监控。下面这两篇文章介绍了怎么通过wireshark来做监控: http://chimera.labs.oreilly.com/books/1230000000545/ch18.html https://webrtc.org/testing/wireshark/# 简单来说,下载一个wireshark,打开wireshark后,先选择当前的以太网连接;然后在wireshark的左上角直接输入”stun”就可以了;

第四步,在trickle-ice的网址上做好配置,点击”Gather Candidates”,我们再转回wireshark软件,就能看到TURN的Client与Server的整个交互过程了;我用的版本是Version 2.0.3。
wireshark截图

另外要注意的是,其中的stun数据包只是整体的一部分,像下图一样选中,即可看到这一部分的数据,事实上,wireshark已经将整个数据的含义完整的解析出来了。
在这里插入图片描述

转载至:https://www.jianshu.com/p/663a50ec70c9

Pili RTC Web 是一款基于 WebRTC 技术的实时音视频通信 SDK,它可以帮助开发者快速地构建音视频通信应用。以下是 Pili RTC Web 的使用教程: 1. 注册账号并创建应用 在 Pili 官网注册账号并创建应用,在应用管理页面获取 AppID 和 AppSecret。 2. 引入 SDK 在 HTML 文件中引入 Pili RTC Web SDK: ```html <script src="https://cdn.pili-engineering.com/pili-rtc-web/latest/pili-rtc-web.min.js"></script> ``` 3. 创建客户端对象 ```javascript var client = new PiliRTC.Client(); ``` 4. 加入房间 ```javascript client.join(channelName, function (err) { if (err) { console.error('Join channel failed', err); return; } console.log('Join channel succeed'); // 加入房间成功后的处理代码 }); ``` 其中,channelName 是频道名称,可以自定义。 5. 添加本地媒体流 ```javascript // 获取本地媒体流 navigator.mediaDevices.getUserMedia({ audio: true, video: true }) .then(function (stream) { // 添加本地媒体流 client.publish(stream, function (err) { if (err) { console.error('Publish failed', err); return; } console.log('Publish succeed'); // 添加本地媒体流成功后的处理代码 }); }) .catch(function (err) { console.error('Get user media failed', err); }); ``` 6. 订阅远端媒体流 ```javascript // 监听远端媒体流事件 client.on('stream-added', function (stream) { // 订阅远端媒体流 client.subscribe(stream, function (err) { if (err) { console.error('Subscribe failed', err); return; } console.log('Subscribe succeed'); // 订阅远端媒体流成功后的处理代码 }); }); ``` 7. 监听媒体流事件 ```javascript // 监听媒体流事件 client.on('stream-subscribed', function (stream) { // 获取远端媒体流的 video 元素 var videoElement = stream.element; // 将 video 元素添加到页面中 document.body.appendChild(videoElement); // 监听媒体流的关闭事件 stream.on('ended', function () { // 媒体流关闭时的处理代码 }); }); ``` 8. 离开房间 ```javascript client.leave(function (err) { if (err) { console.error('Leave channel failed', err); return; } console.log('Leave channel succeed'); // 离开房间成功后的处理代码 }); ``` 以上是 Pili RTC Web 的使用教程,具体使用方法可以参考 Pili RTC Web 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuckyTHP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值