當前位置:首頁 » 雲伺服器 » stun伺服器搭建

stun伺服器搭建

發布時間: 2023-04-06 00:44:33

① webrtc stun伺服器必須是公網ip嗎

一般需要公網IP,如果不是公網IP,那麼只能讓兩個都能連上該伺服器的設備進行通信
也就是限制了它應盡的功能,這個stun伺服器主要用來穿透防火牆,進行兩個網路的通信,如果在同一個內網通信,就沒有太大的意義,但也是可以實現的

② STUN/TURN伺服器搭建

伺服器 :
公網伺服器 購買帶有公網IP的雲伺服器
鏡像 :
ubuntu 16.04

ubuntu16鏡像已經帶有coturn的源 可以直接apt-get安裝

STUN/TURN的默認埠是3478

除此之外還可以通過 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 測試ice

③ 如何製作和使用高度匿名加密代理伺服器

先簡單介紹一下代理的分類:
代理分:Level 1~Level 5 五個等級;
或者也可以分為3類:·
A .全匿名代理不改變你的Request
Fields,使伺服器端看來就像有個真正的客戶瀏覽器在訪問它。當然,你的真實IP是隱藏起來的。伺服器的網管不會認為你使用了代理。
B· 普通匿名代理能隱藏你的真實IP,但會更改你的Request
Fields,有可能會被認為使用了代理,但僅僅是可能,一般說來是沒問題的。不過不要受它的名字的誤導,其安全性可能比全匿名代理更高,有的代理會剝離你的部分信息(就好比防火牆的Stealth
Mode),使伺服器端探測不到你的操作系統版本和瀏覽器版本。
C· 透明代理(簡單代理)改編你的Request Fields,並會傳送真實IP。
你訪問的網站會把你看的一清二楚,知道你用了代理,知道代理的IP,也知道你的真實IP。
一般Level3?-Level5屬於 透明代理; Level 1-Level3 屬於匿名代理! 全匿名代理有時也稱為超級代理!
不想讓網管(國內代理伺服器}或者ISP(國外代理伺服器)知道我想去哪去過哪,那把你的連接請求用SSL加密就行了.
有了匿名功能再加上加密的連接,隱身術終於練成!
製作和使用這個代理需要的軟體是CCPROXY 6.2,STUNNEL,OPENSSL,SOCKSCAP.都是免費軟體,CC3個用戶就夠了.
假設你已經有了一台遠程機器A做代理伺服器,你自己的機器為B.
在A機上,我們要開一個SOCKS5的本地代理埠,並且用SSL加密他的傳輸.首先,在CCPROXY里啟用SOCKS5的代理服務,假設埠是 1080,創建一個用戶,驗證方式為用戶名/密碼/IP混合,假設用戶名密碼都是123,IP為127.0.0.1,記得順便把"禁止區域網外用戶訪問" 勾上,因為遠程的B機不會直接訪問這個服務,免得老人人來掃密碼.下面是關鍵,打開CCPROXY.INI文件,修改並確認下面2個參數:
EnableProxyConnection=0
EnableReferer=0
這樣別人就不知道你使用了代理,也不知道你從哪兒來.好像CC6.0也支持這兩個參數,不過官方是6.3才在FAQ裡面寫出來.
然後配置STUNEEL.CONF文件,內容如下:
cert=stunnel.pem
key = stunnel.pem
taskbar=no #這個參數可以隱藏STUNELL的圖標,如果做壞事就用$%#%#
client=no
[socks2ssl]
accept = 80 #在80埠監聽,准備接受外部連接.
connect = 127.0.0.1:1080 #連接CCPROXY開的SOCKS5服務埠
把監聽埠設為80的原因是極端的假設B機前面的防火牆只允許B機訪問80埠,如果沒這個限制,隨便設一個.
代理伺服器做好了,我們要配置一下B機這個客戶端.
首先是客戶端的STUNNEL.CONF
client = yes
[ssl2SOCKS]
accept = 127.0.0.1:8282 #在本地啟用8282埠的SOCKS5代理服務
connect = AAA.AAA.AAA.AAA:80 #連接到你的代理伺服器A,地址或者域名+埠
然後設置SOCKSCAP,設置代理類型SOCKS5,地址127.0.0.1,埠8282,用戶密碼驗證(啟動SOCKSCAP會讓你輸入,就是前面設置的123了),DNS解析選先本地再遠程.
最後,把你的瀏覽器,例如IE,拉入SOCKSCAP,可以去 http://proxyjudge.org/
驗證你的匿名度了!通常就是下面這樣的結果.
REMOTE_HOST=AAA.AAA.AAA.AAA
REMOTE_ADDR=AAA.AAA.AAA.AAA
HTTP_ACCEPT=*/*
HTTP_ACCEPT_ENCODING=gzip, deflate
HTTP_ACCEPT_LANGUAGE=zh-cn
HTTP_CONNECTION=Keep-Alive
HTTP_HOST=proxyjudge.net
HTTP_REFERER=http://proxyjudge.org/
HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
Maxthon; SV1)
--------------------------------------------------------------------------------
REMOTE_HOST
Result
IP Addr.
Comment
I have no idea because DNS lookup failure.
HTTP Env. value
Result
NoProxy!
Comment
Like no proxy server.
AnonyLevel : 1
REMOTE_HOST that is IP addr. is precious.
或者B機上面裝個個人防火牆例如ZONEALARM,啟用它的隱私保護,那麼
HTTP_ACCEPT_LANGUAGE
HTTP_USER_AGENT
這些本機信息也都會被隱藏.
後記:最初只是通過CCPROXY+STUNNEL建一個HTTP的SSL伺服器通道,然後本機也是直接用STUNNEL連接出來的HTTP代理,但是驗證匿名度的時候始終是Level2,3,讓人很不爽.知道後來看了一些關於CCPROXY和SOCKS5的資料,試著轉換角度弄一下,終於成功了.其實用SOCKSCAP還有一個好處,他可以過濾某些數字開頭的IP
跳過代理直接連接,如果你的代理伺服器駕在國外,你只要把國內主要的一些IP數字開頭例如:202.96. 61.141等等加到那個過濾列表裡面,就可以解決國外代理訪問國內網站很慢的問題了.

④ centos下 Janus Server 搭建筆記

Janus 是一個開源的,通過 C 語言實現了對 WebRTC 支持的 Gateway;Janus 自身實現得很簡單,提供插件機制來支持不同的業務邏輯,配合官方自帶插件就可以用來實現高效的 Media Server 服務。

本文主要介紹如何在 Centos 7.0 下搭建起 janus 伺服器,實現 janus 官方 Demo 瀏覽器與 Android APP Demo(janus-gateway-android)之間的音視頻通話。

目前瀏覽器僅支持 FireFox 瀏覽器,因為 Chrome 瀏覽器打開音視頻採集的話需要 HTTPS 加密訪問!

效果圖如下:

編譯運行 Janus Server 需要依賴較多的一些第三方庫

2.1 安裝依賴

Ubuntu 下通過 aptitude 批量安裝依賴工具包,這里建議 Ubuntu 鏡像源(/etc/apt/source.list)不要為了追求速度而改用了國內的某些鏡像源,如 網易 163,這可能會導致某些工具包下載失敗,建議依然使用官方自帶的鏡像源。

yum list | grep nice

yum install gtk-doc

批量安裝命令:

如果出現某個工具包下載失敗,請修改鏡像源為官方地址,並執行以下命令

以更新鏡像源,完成後重新安裝。

2、 安裝 WebSocket

janus 支持 WebSocket 是可選項,如果不安裝,編譯 janus 時,默認不支持 WebSocket 的鏈接請求,而 Android APP Demo 是通過 WebSocket 與 janus 進行通信的,因為我們希望 Android APP Demo 能與瀏覽器(HTTP)進行視頻通話,所以就必須要在編譯 janus 時支持 WebSocket。

依次執行以下命令,分別進行下載,編譯,安裝:

安裝成功後,在編譯 janus 時,janus 默認會增加對 WebSocket 的集成,或者通過增加編譯參數 --enable-websockets 打開 WebSocket 開關,或 --disable-websockets 關閉 WebSocket 開關。

3、 安裝 Http Server

Janus 源碼目錄下的 html 下自帶 Web Demo(html & javaScript ),Janus 編譯完成並 Start 以後,需要通過 http server 訪問 Janus Web Demo,其中包括:

以上 janus 插件均可通過相應的 http 鏈接進行訪問體驗。

以下介紹一種快速,便捷,輕巧的 HTTP Server 安裝方式:

通過 Node.js (基於 Chrome V8 引擎的 JavaScript 運行環境) 進行安裝,首先安裝 Node.js:

安裝成功後,通過 npm (npm 是 Node.js 的包管理器,是全球最大的開源庫生態系統) 進行安裝 httpserver:

啟動方式:

進入到 html 目錄,執行 http-server 命令即可,如:

輸入 http url 即可訪問。

註:需首先 build & start janus Server!

4、 安裝 libsrtp

Janus 需要至少 version 1.5 以上的 libsrtp,如果系統中已經安裝了 libsrtp,則首先卸載後,手動安裝新版本,這里我們安裝 libsrtp 2.0,依次執行以下命令:

5、 編譯 Janus

通過 Git 下載 Janus 源碼,並編譯安裝:

configure 執行成功後,會輸出 janus 所支持的 協議及插件,如下:

6、 運行 Janus

如果全部安裝以上步驟進行編譯的 janus ,那麼 janus 的全局配置文件存放目錄為 :

或者在啟動 janus 時,加上相應的啟動參數,參數可通過 janus --help 查看;

janus 默認的配置中是沒有 WebSocket 的配置的,直接啟動 Janus 會因沒有 WebSocket 配置文件而報錯。幸運的是在配置目錄中 Janus 已經給我們提供了一個 WebSocket 的示例配置文件 : janus.transport.websockets.cfg.sample,(如果我們要通過 WebSocket 連接 Janus,則需要有個 WebSocket 的配置文件)這里我們可以直接拷貝這個示例文件:

通過查看此配置文件,可以得知 Janus 默認的 WebSocket 的埠號為 8188, 記住這個埠號,在 Android APP Demo 中會使用到!

啟動 Janus:

根據需要可以選擇是否加上後面兩個啟動參數。

我們使用 PC 下的 瀏覽器 與 Android APP Demo 進行聯調。

1、 啟動 Web Demo

進入到 janus 目錄下的 html 目錄,啟動 http-server

這樣外部便可以通過 http://100.100.32.64:8080 進行訪問了,進入首頁後,找到 videoRoom,Start

2、 啟動 Android APP Demo

修改源代碼

janus-gateway-android 支持兩個 Demo 測試:EchoTest 和 VideoRoom,默認情況下會啟用 EchoTest,這個 Demo 僅僅是連接伺服器後,將數據再發回本地進行本地測試,我們要改為與房間內的其它用戶(瀏覽器)進行視頻通話,則需要啟用另外一個測試用例 VideoRoom,按照如下方式修改代碼:

JanusActivity.java 類中新增 VideoRenderer.Callbacks 數組(視頻房間中可能會有多人),暫定義為 2 個,實際連接人數不要超過此數字:

OnCreate 方法中初始化以上定義的數組:

APP Demo 是通過 WebSocket 連接 Janus Server,所以修改 VideoRoomTest.java 中 JANUS_URL 地址為我們啟動的 Janus 伺服器 WebSocket 地址,IP 為 janus server 地址,埠默認為 8188:

3、聯調測試

Janus Server 默認會開啟兩個視頻房間:1234 和 5678,分別使用 VP8 和 VP9 視頻編碼器,所以我們通過 Brower 和 Android APP Demo 進行聯調測試時,暫不需要設置房間 ID。

效果圖:

修改/opt/janus/etc/janus/janus.jcfg

nat: {

stun_server = "stun.voip.eutelia.it"

stun_port = 3478

nice_debug = false

⑤ 華為雲CentOS7 部署STUN/TURN服務 Coturn

記錄一下部署coturn服務的過程,以下步驟是作者親自實踐並確認碼中含好用的,可放心食用。
伺服器環境: 華為雲伺服器 CentOS7

解壓並進入目錄

插入以下內容

配置立即生效

先找到配置文件

例如:返回/usr/turnserver/share/examples/turnserver/etc/turnserver.conf
編輯配置

配置文件末尾添加以下內容

由於是在華為雲上,需要開放埠的訪問,關培州閉對應埠的防火牆,包括埠3478和埠范圍遲笑49152-65535,UDP和TCP都需要

測試地址

補充說明:

⑥ coturn伺服器配置

註:為了更好的體驗,將內容復制到工具中效果才好

#coturn伺服器配置

##操作系統:建議使用ubuntu16+

##安裝步驟:

以下安裝以ubuntu16為例

### 安裝軟體包

* apt update

* apt install coturn

### 配置coturn伺服器

#### 復制DTLS、TLS支持的備塌證書文件(目錄中已經有相應的證書)

* cp /usr/share/coturn/examples/etc/turn_server_cert.pem /etc/turn_server_cert.pem

* cp /usr/share/coturn/examples/etc/turn_server_pkey.pem /etc/turn_server_pkey.pem

#### 編輯/etc/turnserver.conf文件

listening-device=eth0 #網卡

listening-port=3478 #對外服務的商品,需要在防火牆、雲伺服器安全組放通,協議為UDP/TCP,出入站都需要

listening-ip=127.0.0.1 #內網地址

tls-listening-port=5349 #備用埠

listening-ip=172.17.0.4 #區域網地址

relay-ip=172.17.0.4 #區域網地址

external-ip=81.0.187.0 #外網地址

lt-cred-mech

server-name=stun.xxx.cn #域名

realm=stun.xxx.cn #域名

min-port=50001 #穿透需要用到的開始埠 需要在防火牆,雲伺服器安全組中放通

max-port=50009 #穿透需要用到的結束埠

user=test:test #用戶名:密碼 測試或者客戶端接入時需要用到

userdb=/var/db/turndb #數據文件的位置,如果沒有該文件,啟動會有錯誤提示

cert=/etc/turn_server_cert.pem #密鑰相關 上面步驟准備枯明的

pkey=/etc/turn_server_pkey.pem #密鑰相關 上面步驟准備的

no-stdout-log

log-file=/var/tmp/turn.log #日誌文件

pidfile="/var/run/turnserver.pid" #pid文件位置

no-stun #不使用stun服務 主要用於測試turn中繼方式時來關閉stun  更多類容可以參考配置文件自帶的說明

### 編輯/etc/default/coturn文件

* 默認是不需要改的,但還是檢查一下

* TURNSERVER_ENABLED=1

## 安裝完成,重啟服務

* service coturn restart

## 埠放通

* 參考各系統、伺服器,不贅述

## 測試

* 使用自帶工具

turnutils_uclient ip或者域名 -u 用戶名 -w 密碼

## 客戶端使用

iceServers: [{

                'urls': 'stun:stun.xxxx.cn:3478',

                'credential': "沒滾告test",

                'username': "test"

            }

            ,{

                'urls': 'turn:stun.xxxx.cn:3478',

                'credential': "test",

                'username': "test"

            }];

⑦ 【Freeswitch】【媒體NAT穿越案例一】通過stun服務獲取FS的公網IP

所有的通話,實質上是點對點的信息傳輸。(P2P, point to point)
這里的點是指網路上的點,每一個點是有公網IP的;但是實際情況是,很多節點隱藏在NAT之後,它們只有內網地址。那麼之前點之前的連接是賀凳無法直連的。

為了能實現點對點的傳輸,所以內網地址的節點必須獲取到它可以使用的公網地址。

下面的例子是討論FS在NAT後的情況,如下圖所示

那麼FS怎麼樣才能獲取到公網IP呢

有兩種方案,

配置項都禪啟旅是一樣,在external.xml中(因為作者只使用external.xml所以在此配置,各位根據實際需要)
配置項為 ext-rtp-ip

像上圖樣例中,可以配置

注意同樣有一個項叫ext-sip-ip,它是走sip的,是信令層使用的。這里我們只討論RTP,所以配置ext-rtp-ip。

同樣,可以配置為stun伺服器地址,如

配置完畢後,可以登陸FS控制台,輸入 sofia status profile external 來查看配置情況

網旁液路上有很多免費的stun server地址可以使用,那麼是否可以工作呢?

有兩個檢查辦法,

因為這個ext-rtp-ip是寫入SDP中的,所以最直接的方式就是抓包,然後看信令中的SDP消息。下面是SDP樣例如

⑧ WebRTC之STUN與TURN以及ICE

在現實Internet網路環境中,大多數計算機主機都位於防火牆或NAT之後,只有少部分主機能夠直接接入Internet。
很多時候,我們希望處於不同內部網路中的兩台主機能夠直接進行通信,即所謂的P2P通信,避免通過其他公共伺服器的中轉的方式來降低實時通信的延遲。
由於主機可能位於防火牆或NAT之後,在進行P2P通信之前,我們需要進行檢測以確認它們之間能否進行P2P通信以及如何通信。
這種技術通常稱為NAT穿透(NAT Traversal),而更多關於NAT的介紹我們在《 WebRTC之NAT穿牆 》已經做了簡單的介紹。

如果對NAT穿透還不了解的話建議先溫習一下。

而今天的主角是STUN、TURN和ICE,它們是實現NAT穿透的不同技術方案。

STUN,首運喚昌先在RFC3489中定義,作為一個完整的NAT穿透解決方案,英文全稱是Simple Traversal of UDP Through NATs,即簡單的用UDP穿透NAT。

在新的RFC5389修訂中把STUN協議定位於為穿透NAT提供工具,而不是一個完整的解決方案,英文全稱是Session Traversal Utilities for NAT,
即NAT會話穿透。STUN在RFC5389與RFC3489中除了名稱變化外,最大的區別是在新的定義中支持TCP穿透。

STUN是典型的客戶端/伺服器模式,客戶端發起請求,服務端進行響應,默認埠是3478。

兩種STUN規范:分別是 RFC3489 和 RFC5389 。

RFC3489通過UDP進行穿牆。目前的伺服器對於UDP的限制比較多,導致這種模式穿牆的成功率不高。

RFC5389是在RFC3489的升級版,但是含義確是不一樣的,一系列的穿牆攻擊,納入了TCP穿牆。

所有的STUN消息都包含20個位元組(每個位元組佔8位,總共是160位)的消息頭,其中2個位元組(也就是16位)的消息類型,
2個旁扒位元組的消息長度,這個長度不包含消息頭的長度還有16個位元組的事務ID,請求與響應事務ID相同。

消息頭之後就是是消息體,消息體可以是0或多個屬性,每個屬性進行TLV編碼,包括16位的屬性類型、16位的屬性長度和變長屬性值。

更加具體的消息交互協議筆者目前還不打算深入研究,因為目前我的目的是為了學習並使用WebRTC,還沒到達弄清楚WebRTC的每一個細節點的高深境界。

四種主要NAT類型中有三種是可以使用STUN進行穿透:完全圓錐型NAT、受限圓錐型NAT和鏈則埠受限圓錐型NAT,對稱型NAT則不能使用。

上面說到對稱型NAT無法使用STUN成功進行穿透,這時候就需要TURN出場了。

TURN協議的目的就是為了解決對稱型NAT無法穿越的問題。

TURN(Traversal Using Relay NAT,通過Relay方式穿越NAT),是一種數據傳輸協議。允許通過TCP或UDP方式穿透NAT。
TURN也是一個Client/Server協議,也和STUN使用同樣的消息格式。

但實現TURN client的終端必須在通訊開始前與TURN server進行交互,並要求TURN server產生"relay port",也就是中繼轉發地址。
這時TURN server會建立peer,即遠端端點(remote endpoints),開始進行中繼(relay)的動作,TURN client利用relay port將數據傳送至peer,再由peer轉傳到另一方的TURN client。

說白了筆者覺得TURN協議更像一個中繼轉發協議,並不是真正意義上的P2P通信(不知道筆者這樣的理解對不對)

ICE(Interactive Connectivity Establishment,互動式連接建立)。ICE定義了穿越方法而不是協議。

既然我們NAT穿透可以使用STUN也可以使用TURN,那麼什麼時候使用STUN什麼時候使用TURN呢?這就是ICE做的事情。

更通俗地講ICE更像一個NAT穿透的管理者,使用者只需要告訴ICE我要穿牆即可,至於怎麼穿牆那就是ICE的事情了。

ICE整合了STUN與TURN。ICE使得兩個NAT後的端點通信更加便捷。ICE使用STUN進行打洞,若失敗,則使用TURN進行中轉。

下面說說ICE的主要工作:

1、收集候選地址也就是收集Candidate

所謂的Candidate就是一個由IP和埠組成的地址。而Candidate又有三種類型:

2、對Candidate Pair進行排序

ICE收集到了候選者地址後,兩個對等端都擁有了若干自己和對方的候選地址,並將其配對,組成Candidate Pair。

每對Candidate Pair都有對應的優先順序,ICE需要對每對Candidate Pair進行優先順序的排序。

3、對候選地址進行連通性檢測

ICE對排序好的Candidate Pair進行發送檢測和接收檢測,發送和檢測是同時進行的,如果發送消息出去之後還能收回和發送出去一樣的信息則說明連通性是通的

《P2P技術詳解(四):P2P技術之STUN、TURN、ICE詳解》

微信公號:思想覺悟

⑨ 使用docker搭建STUN/TURN伺服器

前言     STUN,首先在RFC3489中定義,作為一個完整的NAT穿透解決方案,英文全稱是Simple Traversal of UDP Through NATs,即簡單的用UDP穿透NAT。     TURN,首先在RFC5766中定義,英文全稱是Traversal Using Relays around NAT:Relay Extensions to Session Traversal Utilities for NAT,即使用中繼穿透NAT:STUN的擴展       簡單的說,TURN與STURN的共同點都是通過修改應用層中的私網地址達到NAT穿透的效果,異同點是TURN是通過兩方通訊的「中間人」方式實現穿透。     ICE的全稱Interactive Connectivity Establ.shment(互動式連接建立),由IETF的MMUSIC工作組開發出來的,它所提供的是一種框架,使各種NAT穿透技術可以實現統一。     STUN和TURN伺服器和ICE可以參考閱讀: P2P技術詳解(三):P2P技術之STUN、TURN、ICE詳解     本文介紹如何通過DOCKER搭建STUN和TURN伺服器,步驟如下 1:創建Dockerfile,內容如下: FROM      ubuntu:14.04 MAINTAINER Patxi Gortázar <[email protected]> RUN apt-get update && apt-get install -y \   curl \   libevent-core-2.0-5 \   libevent-extra-2.0-5 \   libevent-openssl-2.0-5 \   libevent-pthreads-2.0-5 \   libhiredis0.10 \   libmysqlclient18 \   libpq5 \   telnet \   wget RUN wget http://turnserver.open-sys.org/downloads/v4.4.2.2/turnserver-4.4.2.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz \   && tar xzf turnserver-4.4.2.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz \   && dpkg -i coturn_4.4.2.2-1_amd64.deb COPY ./turnserver.sh /turnserver.sh ENV TURN_USERNAME test ENV TURN_PASSWORD test ENV REALM kurento.org ENV NAT true EXPOSE 3478 3478/udp ENTRYPOINT ["/turnserver.sh"] 2:創建turnserver.sh,內容如下 #!/bin/bash set-e if[$NAT="true"-a-z"$EXTERNAL_IP"];then #Try to get public IP PUBLIC_IP=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)||echo"No public ip found on http://169.254.169.254/latest/meta-data/public-ipv4" if[-z"$PUBLIC_IP"];then PUBLIC_IP=$(curl http://icanhazip.com)||exit1 fi #Try to get private IP PRIVATE_IP=$(ifconfig|awk'/inet addr/{print substr($2,6)}'|grep -v 127.0.0.1)||exit1 exportEXTERNAL_IP="$PUBLIC_IP/$PRIVATE_IP" echo"Starting turn server with external IP:$EXTERNAL_IP" fi echo'min-port=49152'>/etc/turnserver.conf echo'max-port=65535'>>/etc/turnserver.conf echo'fingerprint'>>/etc/turnserver.conf echo'lt-cred-mech'>>/etc/turnserver.conf echo"realm=$REALM">>/etc/turnserver.conf echo'log-file stdout'>>/etc/turnserver.conf echo"user=$TURN_USERNAME:$TURN_PASSWORD">>/etc/turnserver.conf [$NAT="true"]&&echo"external-ip=$EXTERNAL_IP">>/etc/turnserver.conf exec/usr/bin/turnserver"$@" 3:使用docker build 創建鏡像,執行結果如下 [root@www]# docker build -t teststurn_1 . Sending build context to Docker daemon  4.096kB Step 1/11 : FROM      ubuntu:14.04 ---> 6e4f1fe62ff1 Step 2/11 : MAINTAINER Patxi Gortázar <[email protected]> ---> Using cache ---> 4460f9f84053 Step 3/11 : RUN apt-get update && apt-get install -y  curl  libevent-core-2.0-5  libevent-extra-2.0-5  libevent-openssl-2.0-5  libevent-pthreads-2.0-5  libhiredis0.10  libmysqlclient18  libpq5  telnet  wget ---> Using cache ---> 05ed9ced48a5 Step 4/11 : RUN wget http://turnserver.open-sys.org/downloads/v4.4.2.2/turnserver-4.4.2.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz  && tar xzf turnserver-4.4.2.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz  && dpkg -i coturn_4.4.2.2-1_amd64.deb ---> Using cache ---> d82ed28fdac9 Step 5/11 : COPY ./turnserver.sh /turnserver.sh ---> Using cache ---> 1d37a488282c Step 6/11 : ENV TURN_USERNAME test ---> Running in bfd88f08db42 Removing intermediate container bfd88f08db42 ---> cf8af0504b95 Step 7/11 : ENV TURN_PASSWORD test ---> Running in b8ef33b7c213 Removing intermediate container b8ef33b7c213 ---> 32a832f23169 Step 8/11 : ENV REALM kurento.org ---> Running in bbe129edf5b3 Removing intermediate container bbe129edf5b3 ---> 21fdfe34689b Step 9/11 : ENV NAT true ---> Running in 5bdfe8555d5e Removing intermediate container 5bdfe8555d5e ---> dc7fc896841c Step 10/11 : EXPOSE 3478 3478/udp ---> Running in 67aaa1966f68 Removing intermediate container 67aaa1966f68 ---> a12646ed45ff Step 11/11 : ENTRYPOINT ["/turnserver.sh"] ---> Running in b8fc2ff09265 Removing intermediate container b8fc2ff09265 ---> f5e5acad0f81 Successfully built f5e5acad0f81 Successfully tagged teststurn_1:latest 執行完後可以看到自己創建的鏡像名稱為teststurn_1  4:啟動docker的鏡像,並開啟埠3478      docker run -d -p 3478:3478 -p 3478:3478/udp teststurn_1    啟動後需要等待一兩分鍾才能測試順暢 5:測試伺服器效果     打開 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/  並輸入自己的本機IP和埠,分別測試兩種協議服務是否生效

⑩ MQTT作為WebRTC信令

Stun Server是開源的coTurn穿透伺服器,Signal Server是開源的Apache Active MQ。

Signal Server用的是開源的Apache ActiveMQ,網上有很多花里胡哨的方法,這個是簡單能搭建成功的過程, 搭建過程 。

穿透伺服器用的是開源的coturn, 搭建過程

SDP交換
根據MQTT協議訂閱發布機制:
訂知辯衡閱同一個主題:(實現接收消息)
發布同一個主題:(實現發布消息)

對於每一個客戶端來說唯一標示是ClientId,客戶端發布消息時設置的主題也是ClientId.

1、客戶端連接到ActiveMQ伺服器

這里的ClientId,就是在ActiveMQ服務端添加的

這里主要灶困是連接到ActiveMQ的流程

首先,呼叫方initCall,主要作用是創建PeerConnection對象,設備,將音視頻數據封裝成MediaStream添加到然後打開本地音視頻PeerConnection中,顯示呼叫搭做頁面。
然後呼叫方startCall,主要作用是CreateOffer,SendOffer,所以要發布Topic:呼叫方Message;
假如ClientA呼叫ClientB,首先ClientA訂閱主題ClientB,然後ClientB訂閱主題ClientA。

Client A給Client B發送消息時,發布主題Client_A_ID和Message。
Client B給Client A發送消息時,發布主題Client_B_ID和Message。

zjf001連接到伺服器
根據前面文章,看一下基本流程

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:714
php跳過if 發布:2025-05-12 15:34:29 瀏覽:467
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:131
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:166
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:736
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:148
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:399
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:544
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:632
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:366