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

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图片| 亚洲五月六月| 欧美一区中文字幕| 欧美国产日韩xxxxx| 欧美裸体一区二区三区| 欧美性jizz18性欧美| 国产精品一区毛片| 国产综合色精品一区二区三区| 国内精品免费午夜毛片| 91久久久久久| 校园春色国产精品| 久久另类ts人妖一区二区| 国产精品一卡二| 久久久久久香蕉网| 性色av一区二区三区| 国产欧美日韩伦理| 亚洲第一精品夜夜躁人人躁| 亚洲人线精品午夜| 久久精品久久99精品久久| 久久躁日日躁aaaaxxxx| 欧美片在线观看| 国产三区精品| 亚洲靠逼com| 久久久蜜桃精品 | 久久久精品tv| 亚洲人被黑人高潮完整版| 一本一本大道香蕉久在线精品| 亚洲在线视频免费观看| 久久只精品国产| 国产精品综合| 一本色道久久综合亚洲二区三区| 欧美一区精品| 日韩亚洲欧美成人| 欧美xart系列在线观看| 国产在线视频欧美| 欧美亚洲视频在线观看| 最新国产成人av网站网址麻豆| 亚洲欧美日韩国产综合精品二区 | 老鸭窝亚洲一区二区三区| 国产精品大片wwwwww| 亚洲高清不卡一区| 久久精选视频| 性欧美办公室18xxxxhd| 欧美四级在线观看| 亚洲日本在线视频观看| 免费看黄裸体一级大秀欧美| 午夜影院日韩| 国产亚洲成av人在线观看导航| 亚洲一卡久久| 日韩视频精品在线观看| 欧美激情在线有限公司| 亚洲欧洲视频在线| 亚洲高清免费在线| 亚洲自拍偷拍麻豆| 中日韩在线视频| 国产精品成人国产乱一区 | 欧美不卡一区| 老牛影视一区二区三区| 亚洲成人直播| 亚洲国产成人久久综合一区| 久久久久免费观看| 91久久亚洲| 亚洲破处大片| 欧美日韩一区三区四区| 亚洲在线第一页| 99精品热视频只有精品10| 国产精品久久久久久久久久ktv | 伊人精品成人久久综合软件| 亚洲欧美成人在线| 亚洲一区在线播放| 国内精品久久久久久久影视蜜臀| 欧美在线观看一区二区三区| 亚洲欧美国产精品专区久久| 国产美女在线精品免费观看| 亚洲欧美日韩一区二区三区在线| 亚洲欧美日韩另类| 亚洲第一黄色| 亚洲精品一区二区三区av| 欧美日韩妖精视频| 久久久久国产精品厨房| 免费视频久久| 香蕉成人伊视频在线观看| 欧美一二三视频| 亚洲日本一区二区| 午夜视频一区在线观看| 亚洲第一主播视频| 亚洲午夜电影| 永久久久久久| 亚洲精品乱码久久久久久日本蜜臀| 欧美午夜不卡| 免费中文日韩| 国产精品嫩草99av在线| 久久婷婷一区| 欧美日韩一区免费| 免费观看亚洲视频大全| 欧美日韩免费网站| 老司机一区二区三区| 欧美日韩午夜激情| 久久综合亚洲社区| 欧美日韩一视频区二区| 老司机午夜精品视频在线观看| 欧美α欧美αv大片| 欧美亚洲视频| 欧美视频你懂的| 国产欧美日韩一区二区三区在线| 欧美国产日韩xxxxx| 国产精品久久久久久久久免费| 久久综合伊人77777| 国产精品护士白丝一区av| 欧美国产日韩精品免费观看| 国产午夜亚洲精品不卡| 亚洲精品视频在线观看免费| 在线观看国产精品网站| 午夜一区二区三区在线观看| 日韩视频不卡| 久久一区二区三区国产精品 | 久久免费高清视频| 国产精品你懂的在线| 亚洲国产精品电影| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 亚洲国产成人久久综合| 欧美亚洲视频一区二区| 久久久久欧美| 欧美一区二区三区成人| 欧美午夜激情视频| 亚洲欧洲精品一区| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲一区3d动漫同人无遮挡| 日韩亚洲国产精品| 你懂的视频一区二区| 久久视频在线免费观看| 国产日韩精品电影| 亚洲图片自拍偷拍| 亚洲一区二区精品| 欧美日韩国语| 亚洲人成绝费网站色www| 亚洲人成网站色ww在线| 免费在线播放第一区高清av| 麻豆精品视频在线观看| 在线观看成人一级片| 午夜精品久久久久久久99水蜜桃| 欧美日韩精品一区二区三区四区| 亚洲欧洲日韩女同| 日韩一本二本av| 欧美色视频一区| 亚洲综合国产激情另类一区| 欧美一区二区三区四区视频 | 国产精品久久久久久久免费软件| 亚洲人成网在线播放| 亚洲视频一起| 国产精品日韩一区| 欧美一区观看| 农村妇女精品| 一区二区三区高清视频在线观看 | 国内精品久久久久久| 久久免费精品视频| 91久久精品国产91久久性色tv| 日韩亚洲视频| 国产精品乱码| 欧美伊久线香蕉线新在线| 老司机午夜精品| 在线亚洲精品| 国产在线精品二区| 欧美大成色www永久网站婷| 一区二区三区欧美在线| 久久精品国产77777蜜臀| 在线看欧美视频| 欧美日产国产成人免费图片| 亚洲女人小视频在线观看| 欧美jizzhd精品欧美巨大免费| 亚洲视频专区在线| 国产亚洲欧洲一区高清在线观看| 免费看的黄色欧美网站| 亚洲尤物视频网| 亚洲成人在线视频网站| 亚洲一区二区高清| 在线免费观看一区二区三区| 欧美日本一区| 久久久久久亚洲精品杨幂换脸| 亚洲欧洲一区二区在线观看| 欧美一区二区三区视频在线观看 | 欧美福利视频| 欧美一区二区三区在线观看视频| 欧美激情精品久久久久久| 午夜久久久久久| 亚洲精品一区二区三区av| 一区二区三区福利| 国产亚洲精品资源在线26u| 欧美精品99| 久久久久久自在自线| 亚洲网站在线播放| 亚洲人在线视频| 欧美jizzhd精品欧美巨大免费| 香蕉尹人综合在线观看| 99精品国产一区二区青青牛奶| 伊人久久大香线| 一区二区三区高清不卡|