青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠(yuǎn)。
隨筆 - 398, 文章 - 0, 評論 - 196, 引用 - 0
數(shù)據(jù)加載中……

centos安裝turnserver

一、下載依賴庫(非必須)
yum install -y make auomake gcc cc gcc-c++ wget
yum install -y openssl-devel libevent libevent-devel mysql-devel mysql-server
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar xvfz libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable && ./configure
make && make install && cd ..
二、下載安裝turnserver(在http://turnserver.open-sys.org/downloads/頁面選擇合適版本下載,這里載3.2.3.95)
wget http://turnserver.open-sys.org/downloads/v3.2.3.95/turnserver-3.2.3.95.tar.gz
tar -xvzf turnserver-3.2.3.95.tar.gz
cd turnserver-3.2.3.95
./configure
make && make install 
三、創(chuàng)建配置文件
cp /usr/local/etc/turnserver.conf.default /etc/turnserver.conf
cp /usr/local/etc/turnuserdb.conf.default /etc/turnuserdb.conf(非必須)
四、編輯配置turnserverconf
external-ip=54.95.37.26/172.31.43.68 (前者為服務(wù)器公網(wǎng)ip,后者為內(nèi)網(wǎng)IP)
fingerprint (開啟指紋)
lt-cred-mech (開啟長期驗(yàn)證機(jī)制)
user=testuser:123456 (設(shè)置一個(gè)測試用戶名及密碼)
五、端口開放
3478(tcp 、udp),5349(tcp、udp),49152-65535(udp)
六、開啟turnserver
 turnserver -v -r foo.org -c /etc/turnserver.conf (-f參數(shù)必須)
 七、測試
 1、官網(wǎng)測試:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
    add server之后,點(diǎn)擊gather candidates,這個(gè)工具如果測試不成功或
 2、candidates type:host:本機(jī)物理網(wǎng)卡或邏輯網(wǎng)卡地址和端口 srflx:發(fā)送Binding請求到STUN/TURN Server經(jīng)過NAT時(shí),NAT上分配的地址和端口
    prflx:端發(fā)送Binding請求到對等端經(jīng)過NAT時(shí),NAT上分配的地址和端口  relay:端發(fā)送Allocate請求到TURN Server,由TURN server用于中繼的地址和端口
 3、測試:代碼測試(html頁面) 打開開發(fā)工具如在控制臺輸出The TURN server is reachable !  is TURN server active?  yes 即表示服務(wù)器正常
    <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 channel
                pc.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 events
                    if (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>
  4、http://你自己的公網(wǎng)ip:3478/ 輸出 TURN Server即表示正常
  5、命令行測試 turnutils_uclient -v -u testuser -w 123456 54.249.95.226(外網(wǎng)ip)
  turnserver的終端出現(xiàn)以下類似結(jié)果,則顯示測試成功
  830: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:3478, remote addr 54.249.95.226:37748
  830: session 003000000000000001: user <>: incoming packet message processed, error 401: Unauthorised
  830: IPv4. Local relay addr: 172.31.33.19:55550
  830: IPv4. Local reserved relay addr: 172.31.33.19:55551
  830: session 003000000000000001: new, username=<testuser>, lifetime=800
  830: session 003000000000000001: user <testuser>: incoming packet ALLOCATE processed, success
  830: session 003000000000000001: refreshed, username=<testuser>, lifetime=600
  830: session 003000000000000001: user <testuser>: incoming packet REFRESH processed, success
  830: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:3478, remote addr 54.249.95.226:33309
  830: session 003000000000000002: user <>: incoming packet message processed, error 401: Unauthorised
  
  八、signal服務(wù)中使用它,還需要修改相關(guān)配置
  external-ip=54.249.95.226/172.31.43.68 (前者為服務(wù)器公網(wǎng)ip,后者為內(nèi)網(wǎng)IP)
  fingerprint (開啟指紋)
  lt-cred-mech (開啟長期驗(yàn)證機(jī)制)
  use-auth-secret  (開啟secret形式授權(quán) )
  static-auth-secret=12345(# 設(shè)置secret,這個(gè)和signal服務(wù)配置文件里的turnserver的secret要一致,最好復(fù)雜點(diǎn),注意最后別留空格
  九、守護(hù)進(jìn)程運(yùn)行turnserver 
   turnserver -v -r foo.org -c /etc/turnserver.conf -o 
   # 后臺運(yùn)行的話下面這句
   # nohup turnserver -c etc/turnserver.conf &
  十、開機(jī)啟動(dòng)配置
    1、創(chuàng)建turnserver.service文件,內(nèi)容如下
      [Unit]
      Description=turnserver for webrtc
      After=network.target
      [Service]
      Type=forking
      User=tester
      Group=tester
      ExecStart=/home/tester/coturn/coturn/bin/turnserver -o -a -f -user=test:123456 -r Hangzhou
      Restart=always
      RestartSec=5
      [Install]
      WantedBy=multi-user.target
    2、拷貝文件   cp turnserver.service  /lib/systemd/system/
    3、重新加載  systemctl daemon-reload
    4、檢查是否加載成功  systemctl list-unit-files --type=service | grep turn 返回正常顯示turnserver相關(guān)內(nèi)容
      trunserver.service                     disabled
    5、運(yùn)行:    systemctl status turnserver.service
    6、檢測狀態(tài):systemctl status turnserver.service

posted on 2022-12-23 15:44 Benjamin 閱讀(331) 評論(0)  編輯 收藏 引用 所屬分類: linux

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情中文字幕在线| 欧美sm视频| 国产日韩欧美综合| 欧美在线网站| 久久久99精品免费观看不卡| 在线免费观看视频一区| 欧美成人激情视频免费观看| 欧美高清你懂得| 亚洲一区二区三区四区在线观看| 亚洲影视中文字幕| 黄色成人av网站| 亚洲激情网站| 欧美特黄a级高清免费大片a级| 亚洲在线视频观看| 久久久99久久精品女同性| 亚洲欧洲视频| 亚洲免费一在线| 在线视频观看日韩| 亚洲精品系列| 黑人一区二区三区四区五区| 91久久精品美女高潮| 国产欧美欧美| 亚洲激情校园春色| 国产一区二区欧美| 亚洲日本视频| 国产亚洲成精品久久| 欧美福利视频一区| 国产老肥熟一区二区三区| 久久永久免费| 国产精品视频网站| 亚洲国产精品美女| 国模叶桐国产精品一区| 亚洲精品影视| 亚洲黄色高清| 久久成人亚洲| 亚洲欧美综合精品久久成人| 女人色偷偷aa久久天堂| 久久狠狠婷婷| 欧美日韩国产区| 欧美国产日韩在线观看| 国产视频不卡| 亚洲午夜精品久久久久久浪潮| 亚洲欧洲在线看| 久久久噜噜噜久久人人看| 午夜精品久久久久久久99黑人| 欧美精品午夜视频| 亚洲第一在线综合在线| 黑人巨大精品欧美黑白配亚洲| 亚洲手机成人高清视频| 99精品免费网| 欧美激情精品| 亚洲国产精品久久久久婷婷884 | 亚洲图片在线| 亚洲高清资源| 久久久欧美一区二区| 久久久999精品免费| 国产精品人人爽人人做我的可爱| 日韩视频一区| 亚洲一区久久| 国产精品美女久久福利网站| 一级日韩一区在线观看| 亚洲天堂成人| 国产精品久在线观看| 午夜久久资源| 国产精品久久久久999| 一区二区不卡在线视频 午夜欧美不卡' | 日韩一区二区免费看| 亚洲手机视频| 欧美四级伦理在线| 亚洲专区在线| 久久精品亚洲一区二区| 国产综合色产在线精品| 欧美一区二区三区视频在线| 欧美专区在线| 黄色精品在线看| 久久九九国产精品怡红院| 嫩模写真一区二区三区三州| 红桃视频国产精品| 麻豆精品国产91久久久久久| 亚洲国产精品va在线观看黑人| 日韩网站在线观看| 欧美午夜宅男影院在线观看| 亚洲女爱视频在线| 免费亚洲视频| 中文精品在线| 国产三级欧美三级| 久久免费偷拍视频| 亚洲人成在线观看| 欧美制服丝袜| 亚洲欧洲视频| 国产精品高清在线| 久久久久九九九九| 亚洲精品免费网站| 欧美一区在线看| **性色生活片久久毛片| 欧美日韩卡一卡二| 欧美在线免费观看视频| 亚洲啪啪91| 久久人91精品久久久久久不卡| 亚洲国产一区二区视频| 国产精品久久久久国产a级| 欧美一区二视频在线免费观看| 最近看过的日韩成人| 欧美一区二区三区播放老司机 | 国产日韩欧美在线视频观看| 欧美成人高清视频| 性欧美大战久久久久久久免费观看| 美日韩在线观看| 亚洲精品一区中文| 国产午夜精品理论片a级大结局| 欧美.日韩.国产.一区.二区| 亚洲欧美成aⅴ人在线观看| 久久婷婷成人综合色| 亚洲制服av| 日韩视频在线观看国产| 国内精品伊人久久久久av一坑| 欧美色图天堂网| 欧美成在线视频| 久久久久久久999| 亚洲欧美春色| 一本一道久久综合狠狠老精东影业| 欧美成人69av| 久热精品视频在线| 欧美亚洲网站| 亚洲欧美日韩在线播放| 亚洲欧洲精品一区二区三区 | 99国产精品私拍| 亚洲国产欧美国产综合一区| 国产在线视频不卡二| 国产精品久久久久毛片大屁完整版 | 欧美日韩国产高清| 久久婷婷人人澡人人喊人人爽| 午夜精品久久久久久99热| 一本到高清视频免费精品| 亚洲国产成人不卡| 欧美3dxxxxhd| 久热精品视频在线观看| 久久久亚洲人| 久久免费精品视频| 久久免费国产精品1| 久久久久久久久伊人| 久久久久99| 麻豆久久久9性大片| 久久夜色精品国产噜噜av| 久久成人精品无人区| 久久国产福利| 久久午夜电影| 久久综合国产精品| 免费黄网站欧美| 欧美xxx在线观看| 欧美高清视频一区二区三区在线观看 | 久久国产精品高清| 久久精品一区二区三区不卡| 久久久久久穴| 欧美成人免费网站| 亚洲国产精品美女| 一区二区免费看| 亚洲综合精品自拍| 午夜精品久久久久久99热软件| 久久av红桃一区二区小说| 久久久www成人免费无遮挡大片| 久久婷婷激情| 欧美日韩精品不卡| 国产精品一卡二卡| 国内偷自视频区视频综合| 亚洲国产成人高清精品| 亚洲精品中文在线| 午夜精彩视频在线观看不卡| 久久久久久穴| 日韩亚洲国产欧美| 欧美一级在线播放| 欧美二区在线| 国产精品入口尤物| 亚洲激情网站| 亚洲欧美日韩国产另类专区| 久久免费高清| 一本久道综合久久精品| 亚洲欧美日本伦理| 欧美国产国产综合| 国产精品视频一| 91久久久久久久久| 亚洲综合精品自拍| 免费在线观看日韩欧美| aaa亚洲精品一二三区| 久久黄色网页| 国产精品热久久久久夜色精品三区| 一区二区三区我不卡| 亚洲欧美自拍偷拍| 亚洲黄色成人久久久| 午夜亚洲性色福利视频| 欧美国产日韩a欧美在线观看| 国产精品一区一区| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产亚洲一区二区在线观看| 99在线精品视频| 欧美不卡福利| 久久精品国产成人| 国产精品热久久久久夜色精品三区 | 欧美xxx成人| 精品动漫一区|