關(guān)于使用什么樣的語(yǔ)言,我們不好一下子解釋明白,讓我們看看這個(gè)圖,從環(huán)境中學(xué)習(xí)吧。
這里包括了服務(wù)器端的應(yīng)用和客戶(hù)端的應(yīng)用。我們一個(gè)一個(gè)地聊。
看看web app 吧
Web app
這也是大部分用戶(hù)想到的webrtc 應(yīng)用,通過(guò)瀏覽器運(yùn)行,當(dāng)然包括了html和通常所說(shuō)的。
移動(dòng)端 app
當(dāng)涉及到移動(dòng)端 app的話(huà),這里有兩種方式來(lái)實(shí)現(xiàn)webrtc。 一種就是我們剛才說(shuō)的Java Script
最常見(jiàn)的方式是把webrtc嵌入在app的環(huán)境中,編譯成一個(gè)SDK。SDK采用的語(yǔ)言包括?
- C, C++
- Java 支持安卓的環(huán)境開(kāi)發(fā)
- Objective-C 或者 Switft 支持蘋(píng)果的 iOS 開(kāi)發(fā)
當(dāng)然也有人使用 C#,通過(guò)Xamarin開(kāi)發(fā)。
Embedded app
嵌入式的設(shè)備是一個(gè)比較有意思的應(yīng)用場(chǎng)景。很多情況下,可能因?yàn)楹芏嘣颍脩?hù)需要把WebRTC 嵌入到其他的設(shè)備中。兩種常用的開(kāi)發(fā)語(yǔ)言:
- C, C++ 如果用戶(hù)經(jīng)?纯 webrtc.org 的代碼,你就會(huì)發(fā)現(xiàn)這些代碼可以直接使用,方便!
- 其他語(yǔ)言可以支持 WebRTC 協(xié)議的,Go 浪 是否值得試試。
當(dāng)然大部分環(huán)境下,C 語(yǔ)言是最合適的開(kāi)發(fā)語(yǔ)言。
TURN server
STUN 和 TURN 服務(wù)器端是必須的。大部分情況下,你不需要在這些服務(wù)器端做任何修改,當(dāng)然也不會(huì)做重新編譯。使用僅僅是使用它。這里無(wú)需其他開(kāi)發(fā)語(yǔ)言介入。大部分開(kāi)源項(xiàng)目最受歡迎的語(yǔ)言還是C 語(yǔ)言。木得選。
Media server
媒體服務(wù)器有非常大的區(qū)別,我們目前大部分情況下討論的是幾個(gè)開(kāi)源的webrtc 媒體服務(wù)器Jitsi/Kurento和后來(lái)的Kurento/Janus。 當(dāng)然 kuento 被收購(gòu)就不提了,傷心!
媒體服務(wù)器選擇的語(yǔ)言根據(jù)平臺(tái)的不同有所不同。Jitsi 是基于Java。Kurento 是基于C/C++,還有前端語(yǔ)言Java或者Node.js。Janus 大部分使用C 語(yǔ)言。
媒體服務(wù)器通過(guò)REST 接口或者Websocket來(lái)和終端進(jìn)行通信,你可以使用任何你喜歡的語(yǔ)言來(lái)開(kāi)發(fā)。當(dāng)然目前最受歡迎的就是Node.js。
App/Signaling server
信令服務(wù)器用來(lái)實(shí)現(xiàn)移動(dòng)app, web app 或者嵌入式app的信令管理和通信。它負(fù)責(zé)TURN服務(wù)器的處理,管理用戶(hù)密碼,以便來(lái)控制媒體服務(wù)器。
答案還是非常簡(jiǎn)單,使用你自己喜歡的語(yǔ)言來(lái)開(kāi)發(fā),例如:
- Node.js
- Java
- PHP
- Erlang
- Ruby 和 Python
- Net
總之一句話(huà),按照自己的喜好,使用什么語(yǔ)言方便就使用方便就使用什么語(yǔ)言。
當(dāng)然最后看看PortSIP 的WebRTC 網(wǎng)關(guān),肯定有驚喜!