把下面的html用浏览器打开,填入你想要测试的turn服务器

<html><header><title>ice测试</title>
</header><body><label for="serverAddress"></label>
<input id="serverAddress" value="turn:127.0.0.1:13902"/>
<br/><label for="username"></label><input id="username" value="foo"/>
<br/><label for="password"></label><input id="password" value="bar"/>
<br/><button onclick="window.test()">Test</button><script>function checkTURNServer(turnConfig, timeout) {return new Promise(function (resolve, reject) {let promiseResolved;setTimeout(function () {if (promiseResolved) return;resolve(false);promiseResolved = true;}, timeout || 5000);promiseResolved = false;let myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection   //compatibility for firefox and chrome, pc = new myPeerConnection({iceServers: [turnConfig]}), noop = function () {};pc.createDataChannel("");    //create a bogus data channelpc.createOffer({}).then((offer) => {if (offer.sdp.indexOf('typ relay') > -1) { // sometimes sdp contains the ice candidates...promiseResolved = true;resolve(true);}pc.setLocalDescription(offer)})pc.onicecandidate = function (ice) {  //listen for candidate eventsif (promiseResolved || !ice || !ice.candidate|| !ice.candidate.candidate|| !(ice.candidate.candidate.indexOf('typ relay') > -1)) return;console.log("ice candidate=", ice.candidate)// If a relay candidate was found, notify that the TURN server works!if (ice.candidate.type === "relay") {console.log("The TURN server is reachable !");}promiseResolved = true;resolve(true);};});}window.test = () => {let serverAddress = document.getElementById("serverAddress").value;let username = document.getElementById("username").value;let password = document.getElementById("password").value;console.log("Trigger ice test. Server address=", serverAddress,", username=", username, ", password=", password)checkTURNServer({urls: serverAddress,username: username,credential: password}).then(function (bool) {console.log('is TURN server active? ', bool ? 'yes' : 'no');}).catch(console.error.bind(console));}</script>
</body>
</html>

简单说来,就是创建一个PeerConnection,指定ICEServer,也就是我们的目标测试ICE。

传入本地的sdp,触发ice过程。

onicecandidate的回调中,会收到ice的结果,如果类型是relay,则表示turn服务器正常。

[pion]测试你的TURN服务器相关推荐

  1. Windows10搭建turn服务器

    Windows10搭建stun/turn服务器 由于项目需要,开始了解并搭建turn服务器,先了解下turn服务器在WebRTC中作用,参看下图. 根据网上资料,搭建过程还是遇到不少的坑,耽误了不少时 ...

  2. docker搭建Coturn TURN服务器

    docker搭建Coturn TURN服务器 文章目录 docker搭建Coturn TURN服务器 下载镜像 启动镜像(失败) 启动镜像(不太对) 启动镜像(搞个配置文件) 自签证书 使用配置文件 ...

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

    本文将向大家介绍两个方面的知识: WebRTC信令控制 STUN/TURN服务器的搭建 在https://mp.csdn.net/postedit/92436226已经向大家介绍了如何构建信令服务器. ...

  4. webrtc学习: 部署stun和turn服务器

    webrtc的P2P穿透部分是由libjingle实现的. 步骤顺序大概是这样的: 1. 尝试直连. 2. 通过stun服务器进行穿透 3. 无法穿透则通过turn服务器中转. stun 服务器比较简 ...

  5. turn服务器在虚拟机搭建内网电脑穿不透,编译rfc5766-turn-server搭建turn服务器

    rfc5766-turn-server是谷歌推荐的turn开源项目,经常作WebRTC的服务器端使用. 编译环境搭建 vagran t Windows用户要想在Windows下编译rfc5766-tu ...

  6. UE4.26像素流送之公网部署(自建TURN服务器)

    像素流送(Pixel Streaming),是UE4力推的网站部署方案.官方从UE4.24开始,默认取消了对HTML5打包的支持,转而使用这种新颖的方式.这种方式的最大好处是,对客户的电脑性能基本没有 ...

  7. 测试一个config server 服务器挂机后,集群是否能读写数据

    测试架构: 测试目的: 测试一个config server 服务器挂机后,集群是否能读写数据. 测试原因: 上周因为内存吃紧,准备添加内存.在查看服务器时,把一台服务器关机检查.     关机后,WE ...

  8. webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建

    webrtc是google推出的基于浏览器的实时语音-视频通讯架构.其典型的应用场景为:浏览器之间端到端(p2p)实时视频对话,但由于网络环境的复杂性(比如:路由器/交换机/防火墙等),浏览器与浏览器 ...

  9. 什么是SAN网络?SAN网络上的存储备份和恢复怎么操作?SAN 测试网络存储与服务器架构架构优化

    什么是SAN网络?SAN网络上的存储备份和恢复怎么操作?SAN 测试网络存储与服务器架构架构优化 SAN网络上的存储备份和恢复 我是驰网艾西今天跟大家聊聊什么是SAN网络? SAN(Storage A ...

  10. 整机压力测试_一种服务器整机压力的测试方法

    一种服务器整机压力的测试方法 [专利摘要]本发明公开了一种服务器整机压力的测试方法,根据测试内容,配置服务器:安装操作系统,准备测试工具IntelWindowsValidationStressSuit ...

最新文章

  1. 用树状数组解决求区间最值的问题:hdu1754
  2. 036、Linux下ipmitool命令
  3. linux mysql 不稳定_Linux服务器mysql数据库自动停止的解决方法 | 很文博客
  4. python pipeline框架_Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法...
  5. 项目中需要总结的内容
  6. 看看高手做的ARM开发板
  7. Fedora最小化安装后没有ifconfig命令
  8. 孙高飞:人工智能测试_高飞学习钓鱼:为什么好的文档很重要
  9. 加密后变成乱码解密_个人磁盘加密软件,使用VeraCrypt进行整盘加密介绍
  10. mysql数据库日志太多_数据库Log太多如何清理但是不影响mysql原本的表数据。
  11. 研究人员:Intel 的 VISA 漏洞可访问计算机中所有数据
  12. TensorFlow官方发布剪枝优化工具:参数减少80%,精度几乎不变
  13. mysql数据迁移到sqlserver_Oracle,SQL Server,Mysql 三种数据库两表联合更新的方法
  14. NestJS生成二维码
  15. python报错:ValueError: invalid literal for int() with base 16: ‘ ‘
  16. android谷歌地图删除marker,无法将marker从google地图上删除
  17. spring终极宝典
  18. 幻云蜜网筑迷阵 春秋靶场信安大赛从攻击者角度看安全
  19. Java基础(五):Java数组声明与初始化
  20. 150分钟学会R语言与R常见问题解答

热门文章

  1. svn如何退回软件版本_SVN版本控制工具的使用
  2. 中美线径对照表_常用线规号码与线径对照表
  3. iptv错误代码2003什么意思_IPTV部分错误代码及原因解释
  4. [实时更新]草木瓜BLOG发表的全部文章
  5. 【毕业设计/Matlab系列】基于matlab的线性调频信号的仿真
  6. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(一)——绪论
  7. 场景应用:100亿的数据你怎么排序
  8. matlab生成正交试验,正交表的构造方法及Matlab实现.pdf
  9. 打印纸张尺寸换算_纸张开本和尺寸对照表!
  10. linux tar 绝对路径,tar打包使用绝对路径详解