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

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è)置一個測試用戶名及密碼)
五、端口開放
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,這個工具如果測試不成功或
 2、candidates type:host:本機(jī)物理網(wǎng)卡或邏輯網(wǎng)卡地址和端口 srflx:發(fā)送Binding請求到STUN/TURN Server經(jīng)過NAT時,NAT上分配的地址和端口
    prflx:端發(fā)送Binding請求到對等端經(jīng)過NAT時,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,這個和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ī)啟動配置
    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>
            亚洲一区在线观看免费观看电影高清| 欧美在线一二三四区| 久久视频在线看| 亚洲无毛电影| 国产日韩av在线播放| 久久久久国产精品厨房| 亚洲欧美激情一区| 国产在线观看一区| 亚洲第一精品在线| 欧美日韩免费一区二区三区视频| 亚洲无线一线二线三线区别av| 亚洲小说春色综合另类电影| 国产日韩欧美综合精品| 蜜桃av一区二区三区| 欧美精品一区二| 欧美在线免费视频| 欧美sm视频| 欧美一二三视频| 久久狠狠婷婷| 在线亚洲免费视频| 久久国产主播| 一区二区三区免费观看| 久久成人综合视频| 中文精品在线| 久久夜色精品亚洲噜噜国产mv| 亚洲图片欧美一区| 久久九九99视频| 亚洲影视综合| 卡通动漫国产精品| 欧美一区二区三区四区视频| 欧美a级在线| 欧美伊人久久| 欧美四级在线观看| 亚洲高清不卡在线| 国内精品视频在线播放| 9久草视频在线视频精品| 精品成人一区二区| 亚洲欧美日韩综合国产aⅴ| 亚洲美女电影在线| 久久影院午夜片一区| 欧美亚洲一级片| 欧美三级黄美女| 欧美激情麻豆| 韩日精品中文字幕| 免费观看亚洲视频大全| 欧美系列电影免费观看| 欧美黄色小视频| 国产亚洲a∨片在线观看| 亚洲毛片在线观看| 亚洲激情在线| 久久女同互慰一区二区三区| 欧美一区网站| 国产精品av免费在线观看| 亚洲二区在线| 18成人免费观看视频| 欧美一区二区日韩一区二区| 亚洲欧美精品一区| 国产精品久久久久77777| 99视频有精品| 亚洲一区三区视频在线观看| 欧美日韩另类国产亚洲欧美一级| 亚洲黄色在线看| 最新国产の精品合集bt伙计| 可以免费看不卡的av网站| 可以看av的网站久久看| 依依成人综合视频| 老司机一区二区| 男人天堂欧美日韩| 亚洲高清资源综合久久精品| 狼狼综合久久久久综合网| 免费永久网站黄欧美| 亚洲国产午夜| 欧美精品激情在线| 夜夜嗨av一区二区三区四季av| 亚洲一区二区三区四区五区午夜| 国产精品免费观看视频| 香蕉国产精品偷在线观看不卡| 久久精品国产v日韩v亚洲 | 美女成人午夜| 亚洲电影视频在线| 欧美理论在线| 亚洲免费视频成人| 久久久久久久综合色一本| 国内偷自视频区视频综合| 蜜臀a∨国产成人精品| 亚洲人成网站精品片在线观看 | 羞羞答答国产精品www一本| 国产欧美日韩精品a在线观看| 欧美资源在线| 亚洲欧洲综合| 亚洲欧美中文另类| 永久免费视频成人| 欧美日韩国产区一| 欧美一区二区视频免费观看| 欧美激情中文字幕一区二区| 亚洲一区二区在线免费观看视频| 国产亚洲视频在线| 欧美国产一区二区在线观看| 亚洲欧美乱综合| 欧美黄色视屏| 久久大逼视频| 99精品视频免费| 激情久久综艺| 国产精品v欧美精品v日韩精品| 久久久亚洲国产美女国产盗摄| 91久久久久久久久| 久久九九电影| 亚洲一区二区免费看| 1024国产精品| 国产色综合天天综合网| 国产女精品视频网站免费| 国产欧美日韩视频| 久久露脸国产精品| 亚洲综合成人婷婷小说| 亚洲大片av| 久久久蜜桃精品| 亚洲男人影院| 在线亚洲自拍| 亚洲日韩欧美视频| 亚洲第一黄网| 国产综合香蕉五月婷在线| 国产精品va在线播放| 欧美精品日韩三级| 美女免费视频一区| 久久国产精品亚洲77777| 亚洲午夜免费视频| 亚洲美女色禁图| 亚洲欧洲中文日韩久久av乱码| 久久久一区二区| 久久久久成人精品| 久久国产主播| 久久激情久久| 久久国产精品久久久久久久久久 | 国产亚洲视频在线| 国产精品福利网站| 欧美视频免费| 欧美性猛交视频| 国产精品v欧美精品∨日韩| 欧美日韩亚洲另类| 欧美日韩国产电影| 欧美日韩亚洲一区二区三区在线观看| 欧美韩日一区二区三区| 欧美成人精精品一区二区频| 欧美成人免费在线| 欧美精品在线视频| 欧美日韩一区三区四区| 欧美日韩在线亚洲一区蜜芽| 欧美日韩综合在线免费观看| 欧美体内she精视频在线观看| 欧美视频精品一区| 国产精品午夜国产小视频| 国产欧美精品在线观看| 国产亚洲欧美另类一区二区三区| 国产一区二区三区高清 | 国产精品久久久一区二区| 国产精品高潮呻吟| 国产亚洲欧美日韩一区二区| 在线免费观看欧美| 一区二区三区福利| 先锋影音网一区二区| 久久天天躁夜夜躁狠狠躁2022 | 欧美一区二区视频在线观看2020| 久久成人亚洲| 欧美成人中文字幕| 亚洲美女视频网| 午夜精品久久久久久久男人的天堂| 欧美一区永久视频免费观看| 欧美sm视频| 国产精品久久久久毛片软件| 伊人男人综合视频网| 在线中文字幕不卡| 久久―日本道色综合久久| 亚洲成人资源网| 中文一区字幕| 老司机一区二区三区| 国产精品久久久久久超碰 | 亚洲丰满在线| 亚洲欧美国产精品va在线观看| 久久躁狠狠躁夜夜爽| 亚洲精品一区二| 久久九九免费| 国产精品外国| 亚洲美女尤物影院| 久久一区国产| 亚洲午夜久久久| 国产精品美女久久久浪潮软件| 国产精品国产成人国产三级| 久久久久久亚洲精品杨幂换脸| 99这里有精品| 久久精品91| 亚洲美女尤物影院| 裸体女人亚洲精品一区| 国产精品你懂的| 日韩一区二区免费高清| 久久久一区二区| 亚洲综合电影| 国产精品二区在线观看| 亚洲狼人综合| 欧美高清视频在线播放| 欧美一级视频精品观看|