1. 程式人生 > >基於webrtc的apprtc伺服器搭建(ubuntu14.04 64位)

基於webrtc的apprtc伺服器搭建(ubuntu14.04 64位)

備註:1.下載的過程需要翻牆,可以確保有穩定的vpn

           2.webrtc伺服器所需要的證書必須是第三方簽名機構頒發的證書,自簽證書不起作用

一、伺服器組成

      2、Collider  信令伺服器  上邊原始碼裡自帶

      4、還需要自己實現一個 coTurn 連線資訊(主要是使用者名稱、密碼的配置)獲取介面,通常叫做 TURN REST API。

二、搭建roomserver

 1.下載房間伺服器原始碼

    sudo apt-get install git(可輸入git version檢查是否安裝git環境,若有此步驟可忽略)

    如果獲取失敗,更新後再安裝

    sudo apt-get update

2.安裝依賴項

    sudo apt-get install nodejs

    sudo apt-get install npm

    sudo npm install -g npm

    sudo apt-get install nodejs-legacy

    sudo npm -g install grunt-cli

   切換至原始碼目錄(有package.json)

   cd apprtc

   npm install(安裝依賴模組在node_modules資料夾下)要翻牆,否則有錯

   sudo apt-get install Python-webtest

   grunt build

 ( 注:npm命令用來安裝nodejs的模組

  切換到Documents/apprtc 目錄下

  • package.json定義了需要安裝哪些依賴項,在package.json所在目錄下執行npm install,安裝依賴模組在這個目錄的node_modudles資料夾下。
  • 如果執行npm install -g則是安裝在全域性的地方,所有node專案都是可以使用這個module,安裝路徑可以通過npm config get prefix檢視)

 編譯之後在 Documents/apprtc目錄下會多出out目錄,下載Google App Engine SDK for Python(需要翻牆),首先確保系統已經有python,下載地址

   下載完後配置環境變數

       sudo gedit  ~/.profile

       source ~/.profile

3.修改配置檔案

  • apprtc.py
    搜make_pc_config(ice_transports)
    config = {'iceServers': [{
                   "url": "stun:windlazio.cn"
                },{
                   "url": "turn:windlazio.cn",
                   "username":"apprtc",
                   "credential": "0xeddf0d3db115c58fd519c1bbd5430a32"
    }]
    一些資料要搜get_wss_parameters(request),將wss:改為ws:,https:改為http:,是為了不要讓客戶端和瀏覽器去使用ssl連線,如果有第三方根證書的簽名機構頒發的證書就可以不改這裡。

    if wss_tls and wss_tls == 'false':

        wss_url = 'ws://' + wss_host_port_pair + '/ws'

        wss_post_url = 'http://' + wss_host_port_pair

      else:

        wss_url = 'wss://' + wss_host_port_pair + '/ws'

        wss_post_url = 'https://' + wss_host_port_pair

  • constants.py
    修改TURN_BASE_URL = 'https://windlazio.cn',這個是coturn所對應的連線資訊介面的地址
    ICE_SERVER_BASE_URL = 'https://windlazio.cn'
    CEOD_KEY = 'apprtc' ,這個和coturn  turnserver.conf 中static-auth-secret的值一致

    WSS_INSTANCE_HOST_KEY = 'windlazio.cn'
    WSS_INSTANCE_NAME_KEY = 'vm_name'
    WSS_INSTANCE_ZONE_KEY = 'zone'
    WSS_INSTANCES = [{
        WSS_INSTANCE_HOST_KEY: 'windlazio.cn:4432',
        WSS_INSTANCE_NAME_KEY: 'wsserver-std',
        WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
    }, {
        WSS_INSTANCE_HOST_KEY: 'windlazio.cn:4432',
        WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
        WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
    }]

    WSS_INSTANCE_HOST_KEY將其改為信令伺服器可訪問的地址,不需要協議,沒有URL。
  • 切換到Documents/apprtc 目錄下,重新編譯
    grunt build
    修改apprtc/src/app_engine/apprtc.py,修改後編譯同步到apprtc/out/app_engine/apprtc.py
    修改apprtc/src/app_engine/constants.py,修改後編譯同步到apprtc/out/app_engine/constants.py

4.執行roomserver

  dev_appserver.py   --host=windlazio.cn  ./out/app_engine

遇到的問題

1. 按照網上的做法,在google_appengine根目錄下找到dev_appserver指令碼,就可以執行roomserver。但是執行失敗,要執行以下步驟:

    install.sh

   安裝後初始化SDK

   google-cloud-sdk/bin/gcloud init(翻牆)

  • 建立Google Account
  • gcloud init 

試gcloud auth list 的命令是否可用

切換至根目錄(dev_appserver可全域性使用),執行房間伺服器:

       dev_appserver.py   --host=windlazio.cn  ./out/app_engine

2.若在~/Downloads/google-cloud-sdk/bin目錄下執行 dev_appserver.py   --host=windlazio.cn  ./out/app_engine,就會出現如下錯誤:

  •  InvalidCWDError:Your current working directory is inside the cloud SDK install root:/home/apprtc/Downloads/google-cloud-sdk.

           In order to perform this update,run the command from outside of this directory.

切換至根目錄下執行dev_appserver.py   --host=windlazio.cn  ./out/app_engine,終端資訊:

提示Restart command,執行

$dev_appserver.py   --host=windlazio.cn  ./out/app_engine

  • TypeError:unsupported operand types for datetime,datetime and 'None type'

測試: grunt runPythonTests,出錯:

  • SyntaxError:Use of const in strict build

錯誤提示:nodejs版本過低,升級nodejs

sudo npm install -g n

sudo n stable(獲取穩定版)

node -v(檢視nodejs版本是否升級成功)

執行dev_appserver.py   --host=windlazio.cn  ./out/app_engine成功。

3.客戶端提示not access getUserMedia();

  電腦本身沒有音視訊裝置,獲取媒體資料失敗

4.grunt build 出錯:在grunt build時提示requests包找不到

      需要使用pip包安裝requests庫

  •   sudo apt-get pip
  •   pip install requests

5.npm install需要翻牆

  EC2北京區1.通過VPC連線VPN,要收費

                  3.EC2上配置vpn

 然後執行命令:sudo npm install -g

三、搭建信令伺服器

1.下載go原始碼

  • 拷貝collider原始碼 在home下建立資料夾collider_root,並在collider_root下建立src

            mkdir    ~/collider_root

           ~/colldier_root$   mkdir src

           然後修改將之前下載的apprtc原始碼中/apprtc/src/collider的三個資料夾拷貝到~/collider_root/src目錄下

           cp  -r  ~/Documents/apprtc/src/collider    ~/collider_root/src

           解壓 tar -xf  go1.4.linux-amd64.tar.gz

           切換到解壓目錄下,/home/apprtc/go

            安裝$ cd  go

            $ cd  src

            $ ./all.bash

2.設定環境變數

   sudo gedit  ~/.profile

   export GOPATH=GOPATH:~/collider_root

   source  ~/.profile

   終端輸入 echo  $PATH ,echo $GOPATH可以檢查是否設定成功

3.collider原始碼

  • 修改collider原始碼

         進入GOPATH下src/collidermain/main.go修改,修改房間伺服器地址為我們前面的房間伺服器地址

         var roomSrv = flag.String("room-server", "https://windlazio.cn", "The origin of the room server")

         編輯$GOPATH/src/collider/collider.go,設定信令伺服器所需要用的HTTPS的證書檔案, 找到如下程式碼,註釋後改為這樣:

         e = server.ListenAndServeTLS("/usr/nginx/conf/ssl/apprtc.pem", "/usr/nginx/conf/ssl/apprtc.key")

         注:這裡的nginx路徑是後面搭建的反向代理伺服器,兩個伺服器使用一個證書,這個證書必須是第三方簽名機構頒發的證書,自簽證書無效,證書申請必須先申請個域名。

  • 編譯collider原始碼

         切換到$GOPATH/src下(需翻牆)

         go get collidermain

         go install collidermain

         成功編譯後會在collider_root目錄下生成bin和pkg目錄,執行檔案在bin目錄下

4.執行信令伺服器

        ~/collider_root/bin/collidermain -port=4432 -tls=true

  •   -port = 表示 collider 監聽的埠
  •    tls=true表示使用ssl加密連結

遇到的問題

 1.在執行 go get collidermain時,出現如下錯誤:

  • 找不到 import path "collidermain"
  • 未安裝go命令,版本高於1.4

  go命令中 初始構建工具的指令碼在$ GOROOT_BOOTSTRAP中查詢現有的Go工具鏈。 如果未設定,則GOROOT_BOOTSTRAP的預設值為$ HOME / go1.4。

        不更改GOROOT_BOOTSTRAP這個值,所以下載的go版本必須是go1.4。下載好後執行./all.bash

2.在執行 go get collidermain 出現錯誤:

  執行go get collidermain後,~/collider_root/src 目錄下生成 GOPATH資料夾,生成golang.org,終端提示錯誤:

 

  預設golang.org在GOPATH/src目錄下,所以將golang.org複製到GOPATH目錄下,當執行go get collidermain命令時就不會報錯了。

3.在執行go get collidermain 出現錯誤:

  • collider/collider.go:56: undefined: tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • collider/collider.go:58: undefined: tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

 $GOPATH/src/collider 中的collider.go註釋掉這兩行程式碼,這個是加密套件,ubuntu中的openssl不支援

4.cannot open websocket

這是信令伺服器沒有啟動。因為apprtc的信令伺服器是基於websocket的,信令伺服器沒有啟動,單存啟動房間伺服器時,客戶端連入伺服器會提示無法開啟websocket.

這種無法開啟,除了沒有啟動之外,還有可能是apprtc的原始碼中和信令伺服器相關部分沒有配置好,導致無法聯絡,相關配置檔案要一致。

5.websocket error

  若使用自簽證書瀏覽器不會通過,無法通訊。

四、搭建coturn打洞伺服器

1.下載原始碼

解壓  tar -xvfz  turnserver-4.4.1.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz

         sudo apt-get update

         sudo apt-get install gdebi-core

         sudo gdebi *.deb

2.編輯配置檔案

  (1).sudo gedit /etc/default/coturn,將TURNSERVER_ENABLED=1去掉註釋
        source /etc/default/coturn   //儲存

  (2).修改/etc/turnserver.conf之前預備工作,即turnserver.conf需要的內容

  •  turnadmin -k -u apprtc -r north.gov -p 123456 //生成md5值,儲存

       其中apprtc是使用者名稱,123456是密碼

  •  建立my.db資料庫, 將md5值與使用者名稱寫入到資料庫中儲存。
    apprtc:0xeddf0d3db115c58fd519c1bbd5430a32
  •  生成coturn證書

           openssl生成簽名證書

           sudo openssl req -x509 -newkey rsa:2048 -keyout /usr/local/etc/turn_server_pkey.pem-out/usr/local/etc/turn_server_cert.pem-days 99999 -nodes

       然後修改配置檔案

       sudo gedit /etc/turnserver.conf,開啟如下介面:

       listening-device=eth0   //橋接模式
       listening-port=3478
       tls-listening-port=5349                         
       listening-ip=192.168.2.101
       relay-device=eth0
       relay-ip=192.168.2.101
       external-ip=192.168.2.101
       relay-threads=0
       min-port=49152
       max-port=65535
       Verbose     //輸出更多的log
       fingerprint     //列印資訊
       lt-cred-mech
       use-auth-secret   //REST API 認證需要
       static-auth-secret=apprtc //設定使用者名稱
       user=apprtc:0xeddf0d3db115c58fd519c1bbd5430a32 //使用者名稱和MD5
       user=apprtc:123456  //明文,兩個user二選一
       userdb=/home/apprtc/my.db
       stale-nonce
       cert=/etc/turn_server_cert.pem
       pkey=/etc/turn_server_pkey.pem
       no-loopback-peers  //安全模式,遮蔽 loopback, multicast IP地址的 relay
       no-multicast-peers  //安全模式,遮蔽 multicast IP地址的 relay
       pidfile="/var/run/turnserver.pid"
       mobility
       no-cli   //禁用本地 telnet cli 管理介面
       no-sslv3

     source /etc/turnserver.conf

  (3)修改/apprtc/src/web_app/js/util.js

  function requestIceServers(iceServerRequestUrl, iceTransports) {
    return new Promise(function(resolve, reject){
     var servers = [{ credential: "0xeddf0d3db115c58fd519c1bbd5430a32",
                              username: "apprtc",
                              urls: [ "turn:windlazio.cn:3478?transport=udp",      
                                       "turn:windlazio.cn:3478?transport=tcp" ]
                            },
                   {
                    urls:["stun:windlazio.cn:3478?transport=udp",
                            "stun:windlazio.cn:3478?transport=tcp"]
                       }];
      resolve(servers);
});
}
更改~/Documents/apprtc/src/web_app/js/util.js,通過grunt build編譯同步到 ~/out/app_engine/js/apprtc.debug.js

3.執行turnserver

 三種方法

  • turnserver -c /etc/turnserver.conf -v
    log 儲存在/var/tmp
    終端也顯示log資訊
  • sudo service coturn start
    sudo service coturn stop
    log 儲存在/var/tmp
    終端不會顯示log資訊,列印一些狀態資訊
  • sudo turnserver -L 192.168.2.101 -o -a -b ~/my.db -f -r north.gov
    log儲存在/etc/log
    終端只打印連線狀態資訊

遇到的問題

 1.啟動coturn伺服器,出錯:

    cannot bind the Device eth0

  應該用sudo turnserver -c /etc/turnserver.conf -v超使用者模式啟動

2.網上搜索的相關資料配置turnserver.conf中的userdb = /etc/turnuserdb.conf,這個檔案不是一個數據庫,而這裡需要的是一個數據庫,要生成.db檔案並進行配置。

五、搭建Nginx 反向代理伺服器

dev_appserver.py預設監聽8080埠,即不支援https(埠443),故搭建Nginx伺服器

1.nginx安裝包

  • 解壓       sudo tar  -zxvf   nginx-1.5.9.tar.gz  -C  ~/Documents
  • 安裝依賴項
    sudo  apt-get install libssl-dev
    sudo  apt-get install libpcre3  libpcre3-dev

2.安裝

 切換到解壓目錄下~/Documents/nginx-1.5.9

 執行:./configure  --prefix=/usr/nginx  --with-http_stub_status_module  --with-http_ssl_module

            make

            make install

 若成功則usr下的nginx資料夾就會生成,可執行檔案在/usr/nginx/sbin目錄下。

3.修改配置檔案

sudo gedit  /usr/nginx/conf/nginx.conf

user  www-data; //配合php5-fpm使用
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

upstream roomserver {

        server 192.168.2.101:8080;
}
server {
        listen 80 ;
        server_name windlazio.cn;
        return  301 https://$server_name$request_uri;
}
server {
        root /usr/nginx/html;
        index index.php index.html index.htm;
        listen 443 ;
        ssl on;
        # 域名為windlazio.cn的SSL證書文
        ssl_certificate      /usr/nginx/conf/ssl/apprtc.pem;
        ssl_certificate_key  /usr/nginx/conf/ssl/apprtc.key;
        server_name windlazio.cn;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        access_log  /usr/nginx/logs/apprtc.log;
        location / {
             
               proxy_pass http://roomserver$request_uri;
               proxy_set_header Host $host;
        }
        location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        }
}
}

4.啟動nginx

       切換到可執行檔案的目錄/usr/nginx/sbin,  驗證配置檔案是否正確

  • sudo ./nginx -t
  • sudo ./nginx -s  reload     //重啟nginx
  • ps -ef|grep nginx             //檢視程序
  • pkill -q  nginx                  //停止所有程序
  • sudo kill -QUIT 程序號    //殺死程序號

5.coturn連線資訊的介面(TURN REST API)

說明:1.TURN REST API 標準參考文件  ,REST API 是動態賬號和密碼, turn server和客戶端互動時使用的。

          2.由於 coTurn 沒有自帶該介面,所以需要自行實現。關於該介面的實現方式,詳細的內容請參考 coTurn原始文件

          3.介面可通過php介面實現,並在coturn中配置

  1. 安裝配置php
    sudo apt-get install php5-fpm
    sudo gedit /etc/php5/fpm/php.ini
    設定cgi.fix_pathinfo=0
  2. nginx.conf中第一行
    #user nobody
    去掉註釋後改為
    user www-data
    否則訪問https://windlazio.cn/index.php時頁面會出錯
  3. index.php介面實現
    <?php  

        $request_username = "";//$_GET["username"];  
        if(!isset($_GET["username"])) {  
            //echo "username == null";  
            //exit;  
        $request_username = "apprtc";
        }
        $request_key = "0xeddf0d3db115c58fd519c1bbd5430a32";//$_GET["key"];  
        $time_to_live = 600;  
        $timestamp = time() + $time_to_live;//失效時間  
        $response_username = $timestamp.":".$request_username;//$_GET["username"];  
        $response_key = $request_key;  
        if(empty($response_key))  
            $response_key = "apprtc";//constants.py中CEOD_KEY  

        $response_password = getSignature($response_username, $response_key);  

        $iceServer = new Response();  
        $iceServer->username = $response_username;  
        $iceServer->credential = $response_password;  
        $iceServer->ttl = 86400;  
        $iceServer->urls = array("turn:windlazio.cn:3478?transport=udp","turn:windlazio.cn:3478?transport=tcp","turn:windlazio.cn:3479?transport=udp","turn:windlazio.cn:3479?transport=tcp");  
        $str = json_encode($iceServer);
        $config = array("iceServers"=>[$iceServer,$iceServer]);//{"iceServers":"ff"};
        echo json_encode($config); 
        /**   
             * 使用HMAC-SHA1演算法生成簽名值   
             *   
         * @param $str 源串   
             * @param $key 金鑰   
             *   
             * @return 簽名值   
             */    
        function getSignature($str, $key) {    
            $signature = "";    
            if (function_exists('hash_hmac')) {    
                $signature = base64_encode(hash_hmac("sha1", $str, $key, true));    
            } else {    
                $blocksize = 64;    
                $hashfunc = 'sha1';    
                if (strlen($key) > $blocksize) {    
                    $key = pack('H*', $hashfunc($key));    
                }    
                $key = str_pad($key, $blocksize, chr(0x00));    
                $ipad = str_repeat(chr(0x36), $blocksize);    
                $opad = str_repeat(chr(0x5c), $blocksize);    
                $hmac = pack(    
                        'H*', $hashfunc(    
                                ($key ^ $opad) . pack(    
                                        'H*', $hashfunc(    
                                                ($key ^ $ipad) . $str    
                                        )    
                                )    
                        )    
                );    
                $signature = base64_encode($hmac);    
            }    
            return $signature;    
           }    

        class Response {  
            public $username = "";  
            public $credential = "";  
            public $ttl = "";  
            public $urls = array("");  
        }  
    ?>

    返回JSON結果例如:

    {"iceServers":[{"username":"1492579833:apprtc","credential":"nWU332E5+KQ2ermmzEEay4rsHag=","ttl":86400,"urls":["turn:windlazio.cn:3478?transport=udp","turn:windlazio.cn:3478?transport=tcp","turn:windlazio.cn:3479?transport=udp","turn:windlazio.cn:3479?transport=tcp"]},{"username":"1492579833:apprtc","credential":"nWU332E5+KQ2ermmzEEay4rsHag=","ttl":86400,"urls":["turn:windlazio.cn:3478?transport=udp","turn:windlazio.cn:3478?transport=tcp","turn:windlazio.cn:3479?transport=udp","turn:windlazio.cn:3479?transport=tcp"]}]}
  4. 啟動/停止 php5-fpm
    sudo service php5-fpm start/stop

遇到的問題

1.啟動nginx時,錯誤:

 unknown directive “ssl” in /usr/nginx/conf/nginx.conf

 安裝開始執行這個命令:./configure  --prefix=/usr/nginx 說明該命令沒有將ssl模組編譯進nginx,配置檔案中以ssl_開頭 需要ssl模組的支援

 在安裝編譯時改用此命令:   ./configure  --prefix=/usr/nginx  --with-http_stub_status_module  --with-http_ssl_module 就解決了。

2.sudo ./nginx -s  reload 終端會報錯

  • nginx: [error] open() "/usr/nginx/logs/nginx.pid" failed (2: No such file or directory)

 執行   sudo /usr/nginx/sbin/nginx -c /usr/nginx/conf/nginx.conf 就會生成pid檔案。

3.啟動roomserver有問題,最後檢視虛擬機器的ip沒有固定,所以為了防止錯誤再次發生,應靜態配置虛擬機器的ip

  直接在虛擬機器右上角系統設定中網路設定手動分配固定ip

4.用http連線時出錯

  cannot create RTCPeerConnection

  是因為apprtc.py中make_pc_config "url":turn:apprtc@192.168.2.101,這裡的apprtc應去掉

5.chrome顯示pushState錯誤(Firefox 顯示:Messages: Failed to start signaling: The operation is insecure.)

Messages:Failed to start signaling: Failed to execute 'pushState' on 'History' : A history state object with URL 'http://192.168.2.101/r/064289210'
cannot be created in a document with origin 'https://192.168.2.101'and URL 'https://192.168.2.101/'

這種錯誤大意是不能將http地址強制轉成https

  • 解決方案

    apprtc通過grunt build編譯好後在/apprtc/out/app_engine/js目錄下找到 apprtc.debug.js檔案搜尋pushState,找到後將roomLink中的http強制轉為https

    roomLink=roomLink.substring("http","https");

    (window.history.pushState({"roomId":roomId, "roomLink":roomLink}, roomId, roomLink);)再重新訪問應該不會報錯了。

正常情況應該返回JSON結果例如:

{"iceServers":[{"username":"1492579833:apprtc","credential":"nWU332E5+KQ2ermmzEEay4rsHag=","ttl":86400,"urls":["turn:windlazio.cn:3478?transport=udp","turn:windlazio.cn:3478?transport=tcp","turn:windlazio.cn:3479?transport=udp","turn:windlazio.cn:3479?transport=tcp"]},{"username":"1492579833:apprtc","credential":"nWU332E5+KQ2ermmzEEay4rsHag=","ttl":86400,"urls":["turn:windlazio.cn:3478?transport=udp","turn:windlazio.cn:3478?transport=tcp","turn:windlazio.cn:3479?transport=udp","turn:windlazio.cn:3479?transport=tcp"]}]}

原因是nginx無法正確的將 .php 檔案的地址傳遞給php5-fpm去解析,相當於php5-fpm接受到了請求,但這請求卻指向一個不存在的檔案,於是返回空結果。
為了解決這個問題,有兩個途徑(兩個選其一)

1.nginx預設的fastcgi_params配置檔案:
   vi /etc/nginx/fastcgi_params
   在檔案的最後增加一行:
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

2.nginx.conf中增加一行

  location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        }

關於這行的內容,多說幾句,其中有兩個引數:
$document_root 即是指網站的根目錄,也就是我們在前面剛設定的 root /www;
$fastcgi_script_name 則指的是index .php 檔名

7.在測試的過程中Android apk出現錯誤提示:parse JSON error,導致無法通訊。

 在iOS 也有類似的情況,設定如下,錯誤消失

傳給iOS turnRequestUrl =https://windlazio.cn/index.php?username=apprtc&key=0xeddf0d3db115c58fd519c1bbd5430a32

其中域名或ip,username和key是對應index.php配置好的。

六、附錄

  • 開啟roomserver 切換到~/Documents/apprtc 下 grunt build重新編譯
    開啟collider伺服器切換到 ~/collider_root/src 重新編譯
     go get collidermain
     go install collidermain


相關推薦

基於webrtc的apprtc伺服器搭建ubuntu14.04 64

備註:1.下載的過程需要翻牆,可以確保有穩定的vpn            2.webrtc伺服器所需要的證書必須是第三方簽名機構頒發的證書,自簽證書不起作用 一、伺服器組成       2、Collider  信令伺服器  上邊原始碼裡自帶       4、還需要自己

android原始碼編譯ubuntu16.04 64

編譯步驟 1. 原始碼下載; 2. 構建編譯環境; 3.編譯原始碼; 4.執行. 編譯之前首先要下載和安裝repo和gitt工具。 repo和git Google採用Git對AOSP專案進行多倉庫管理. 為了方便需要,對git語句進行了封裝,也就形成了repo.

阿裏雲服務器Ubuntu16.04 64遠程連接

遠程連接 要求 left 沒有 阿裏 xshell medium 上傳下載 rand 購買阿裏雲服務器 1.打開阿裏雲官方網站,賬號登錄,選擇產品中的雲服務器 ECS 2.根據自身需求,選擇合適的阿裏雲服務器系統,(1)點擊一鍵購買,(2)選擇地域,(3)根據自身需

Ubuntu14.04 64配置Caffe 教程基於CUDA7.5

  深度學習是研究計算機視覺的重要工具,尤其在影象分類與識別等領域有著劃時代的意義。現在有很多深度學習框架,Caffe是比較常用的一個。本文講述了Ubuntu 14.04(64位)系統下配置Caffe

ubuntu14.04 64安裝WPS成功解決沒有ia32-libs的問題

col lun 又一 target rest .com update sudo lan 前幾天,就把自己的系統換成了ubuntu14.04 64位的。然後就是安裝WPS了(戳這裏進入官網下載)。因為官網提供的WPS是32位的操作系統,所以64位的操作系統不

智慧機開發環境搭建和編譯Ubuntu14.04[64bit] MTK

系統補丁更新 進行一些必要的補丁更新以及軟體版本更新。 命令: sudo apt-get update //與伺服器同步軟體包列表,這裡的伺服器是指系統在sources.list檔案中的源 sudo apt-get upgrade //升

Ubuntu14.04 64上安裝Clion

14.04 acc inux 界面 下載安裝 section targe pre http 1.下載Clion 1.1 下載Linux版Clion的.tar.gz的壓縮包 Clion 2017.3.1 下載安裝:https://www.jetbrains.com/clion

SVN伺服器搭建服務端+客戶端

Windows下使用VisualSVN Server搭建SVN伺服器 SVN簡介:  1、為什麼要使用SVN?       程式設計師在編寫程式的過程中,每個程式設計師都會生成很多不同的版本,這就需要程式設計師有效的管

Ubuntu FTP伺服器搭建內網和公網

1、安裝vsftpd # sudo apt-get install vsftpd 若提示Unable to locate package(未發現軟體包),則需要先更新源列表/etc/apt/source.list檔案。 Ubuntu源:http://wiki.ubuntu.org.cn/

Ubuntu14.04 (64)系統安裝genymotion模擬器和整合到android studio!!!

Ubuntu14.04 (64)位系統安裝genymotion模擬器: 1.在應用商店裡面安裝VirtualBox 2.在genymotion的官網上下載,首先要註冊,要去郵箱完成驗證 2.註冊後登陸,然後點選get genymotion 3.進入後什麼也別管,直接點選

Hadoop2.2.0偽分散式環境搭建附:64下編譯Hadoop-2.2.0過程

Hadoop2.2.0偽分散式環境搭建: 寫在前面:Hadoop2.2.0預設是支援32位的OS,如果想要在64位OS下執行的話,可以通過在64位OS下面編譯Hadoop2.2.0來實現,編譯的操作步驟在最後面呈現。 1: 操作:下載軟體; 檔案:Hadoop-2.2.0.

ubuntu14.04 64安裝32庫支援

如出現類似問題: [email protected]:~$ arm-cortex_a8-linux-gnueabi-gcc -vbash: /home/linux/toolchain/bin

VxWorks/tornado環境搭建Win 7 64 corei5下試驗成功

軟體資源下載連結http://pan.baidu.com/s/1kToygpL 1. 虛擬軟盤(RamDisk、VD等)依次裝載CD1和CD2,分別安裝,安裝CD1到60%時會卡死,只要在工作管理員殺死程序tornado.exe[我並沒有安裝CD2]         CD1

ubuntu14 04 64 安裝eclipse出錯

osgi csdn cas 解決 ava java gpl tex http 1 錯誤描述 org.eclipse.m2e.logback.configuration: The org.eclipse.m2e.logback.configuration bundle wa

RabbitMQ C++客戶端SimpleAmqpClient編譯總結32以及64

整個過程沒有截圖,使用為我的“印象筆記”不能傳圖,所以全是以文字形式描述,各位跟蹤我的腳步,一般能走到末尾。 遇到的問題: 1、Cmake必須是2.8版本或以上 2、boost編譯方式必須是預設動態編譯庫,使用靜態庫編譯會報錯(最終我重新編譯boost庫使用完全且預設動

CentOS7 環境下二進位制安裝Mysql5.7.23都是64

網上這方面的安裝資料參差不齊,到處是坑,廢了我好大的勁才裝好,然後把自己整理一下,把安裝過程記錄了下來,同時也分享給有需要的朋友,話不多說,直接上菜 1、 首先去Mysql官網下載Mysql5.7.23   下載地址   https://dev.mys

win7、win832、64成功安裝oracle10g32、64案例及驗證是否安裝成功

win7- 32位安裝32位 oracle10g,win7-64位安裝32位、64位oracle10g均可參考本案例。 參考:http://blog.sina.com.cn/s/blog_96cb5d4c0101e6pm.html 下載連線:http://pan.baid

常用工具包-哈工大語言技術平臺LTP-本地安裝-java介面ubuntu,win7-64

目錄 第一部分 簡介          LTP4J簡介。LTP底層均是C++實現,而LTP4J是對LTP的Java介面封裝。所以對於需要Java介面的開發人員來說要通過呼叫LTP4J的介面實現呼叫LTP的目的,LTP4J封裝

python之scrapy安裝python3.6*64

用python自帶的urllib庫能寫一些簡單的爬蟲,這裡給大家推薦一個牛逼的框架,叫做scrapy,但是這個東東安裝起來難受的要死,昨天整了一天才弄好。。。。。。首先,你要在電腦上安裝python(這個怎麼安裝我就不說了,這個不會安裝,就不用學了。。。。。)第一步:在你的c

基於Docker 搭建自己的webrtc 伺服器:(一)在ubuntu14.04搭建Docker 環境

一.環境準備 ​​​​​​1.安裝額外linux-image-extra-*  軟體包 linux-image-extra-* 包用於允許Docker使用aufs儲存驅動程式。AUFS是一種聯合檔案系統。它使用同一個Linux host上的多個目錄,逐個堆疊起來,對外