通過“網(wǎng)頁實(shí)時通信”(Web Real-Time Communication,簡稱WebRTC)實(shí)現(xiàn)實(shí)時語音對話或視頻對話,我們只需點(diǎn)擊一個鏈接即可開始談話,除了瀏覽器,無需其他額外的軟件,也不需要登錄服務(wù)。
目前Skype是最受歡迎的實(shí)時語音對話和視頻對話服務(wù),但是WebRTC的出現(xiàn)可能改變這一切。Firefox目前已經(jīng)集成了WebRTC客戶端,實(shí)現(xiàn)實(shí)時語音對話和視頻對話,就好像打開一個網(wǎng)頁一樣簡單。相比之下,使用Skype等其他的實(shí)時語音對話或視頻對話解決方案,我們需要安裝客戶端并建立一個用戶賬戶。
通過WebRTC實(shí)現(xiàn)實(shí)時語音對話和視頻對話不僅容易,同時WebBTC不需要登錄服務(wù)器,不需要使用任何服務(wù)賬戶,而且該技術(shù)允許兩個瀏覽器建立一個連接直接進(jìn)行通信,無論是音頻還是視頻數(shù)據(jù)全部不需要經(jīng)過服務(wù)器,雖然發(fā)起呼叫的過程用戶需要與服務(wù)器聯(lián)系,但是通信同樣是在加密的狀態(tài)下傳輸。因而,即使最挑剔的隱私和數(shù)據(jù)保護(hù)主義者也難以挑出什么毛病。
Google早在2011年已經(jīng)在自己的瀏覽器上開始支持WebRTC,同時公布了實(shí)現(xiàn)WebRTC的源代碼,很快Chrome和Firefox都嵌入了WebRTC引擎。移動版本方面,目前占主導(dǎo)地位的是Android 5.0安裝的瀏覽器引擎的WebView 3.6,在瀏覽器中可以通過相應(yīng)的JavaScript接口調(diào)用該引擎,即可實(shí)現(xiàn)WebRTC應(yīng)用:通過GetUserMedia,軟件可以激活捕獲視頻和音頻信號源的設(shè)備,例如攝像頭和麥克風(fēng),通過RTCPeerConnection即可輕松呼叫并建立通信。
在各種瀏覽器紛紛支持WebRTC的同時,W3C的一個工作組也正在進(jìn)行WebRTC的標(biāo)準(zhǔn)化工作,預(yù)計(jì)此項(xiàng)工作將在2015年年中完成。
WebRTC節(jié)約資源
實(shí)現(xiàn)WebRTC服務(wù)并不復(fù)雜,因?yàn)榉?wù)器需要做的只是讓對話的雙方彼此連接。建立呼叫的過程非常簡單:瀏覽器首先傳遞一個信號到WebRTC服務(wù)器,表示它希望開始一次對話。它將在通信被加密的情況下接收一個來自服務(wù)器的HTTPS鏈接,然后用戶可以將該鏈接提供給要對話的朋友。緊接著瀏覽器將詢問用戶是否允許訪問攝像頭和麥克風(fēng),如果它成功獲得用戶的授權(quán),那么就會激活硬件并開始捕捉輸入的數(shù)據(jù)。
與此同時,瀏覽器確定用戶當(dāng)前設(shè)備的IP地址是否可以通過互聯(lián)網(wǎng)訪問。因?yàn)橛行╇娔X并沒有直接連接到互聯(lián)網(wǎng)上,而是通過路由器連接到互聯(lián)網(wǎng)的,所以需要通過重定向數(shù)據(jù)流(NAT)技術(shù)進(jìn)行連接。對于類似的設(shè)備,為了找出這種重定向之前的IP地址,瀏覽器需要聯(lián)系“NAT會話傳輸應(yīng)用程序”(Session Traversal Utilities for NAT,簡稱STUN)獲得真正可以通過互聯(lián)網(wǎng)連接上的IP地址。接下來,瀏覽器將把音頻和視頻編解碼器的端口號以及圖像分辨率等配置資料報告給WebRTC服務(wù)器。
加密的實(shí)時通信
如果進(jìn)行對話的朋友點(diǎn)擊接收到的鏈接嘗試啟動對話,那么瀏覽器將通過WebRTC服務(wù)器獲得發(fā)起對話的用戶電腦的IP地址以及WebRTC服務(wù)相關(guān)的配置數(shù)據(jù)。瀏覽器將自動根據(jù)這些信息進(jìn)行調(diào)整,瀏覽器中的3個引擎將開始啟動,兩個引擎負(fù)責(zé)優(yōu)化和壓縮音頻和視頻數(shù)據(jù),另一個引擎負(fù)責(zé)傳輸數(shù)據(jù),它將確保對話數(shù)據(jù)在順暢并且質(zhì)量良好的情況下發(fā)送,并通過安全實(shí)時傳輸協(xié)議(Secure Real-time Transport Protocol,簡稱SRTP)發(fā)送加密的實(shí)時流。然而,如果網(wǎng)絡(luò)配置阻止STUN服務(wù)器從報告的IP地址直接進(jìn)行連接,那么對話雙方無法建立直接的連接,瀏覽器將嘗試尋找另一種方式實(shí)現(xiàn)WebRTC通信。在這種情況下,將按照WebRTC標(biāo)準(zhǔn)的規(guī)定通過一個“NAT會話中繼”(Traversal Using Relay NAT,簡稱TURN)服務(wù)進(jìn)行中轉(zhuǎn)。如果想確定自己的電腦和網(wǎng)絡(luò)配置是否能夠通過互聯(lián)網(wǎng)進(jìn)行直接連接,那么我們可以通過類似netscan.co之類的在線監(jiān)測服務(wù)進(jìn)行檢測。
Goolge和Mozilla正努力推動WebRTC,Chrome瀏覽器可以通過WebRTC與多位朋友對話,而Firefox則與西班牙電信的子公司合作推廣WebRTC。目前,只有蘋果仍然沒有加入WebRTC陣營,但是Safari瀏覽器有支持WebRTC的跡象。此外,iOS已經(jīng)有一系列的WebRTC應(yīng)用程序,同時也有用于Safari的WebRTC瀏覽器插件。
無論是應(yīng)用程序還是Web服務(wù),像talky.io和apeear.in這樣的WebRTC服務(wù)基本上都是免費(fèi)的,與微軟明顯不是同路人。不過,作為Skype服務(wù)的所有者,微軟公司并不準(zhǔn)備輕易認(rèn)輸。相反,微軟為Internet Explorer瀏覽器開發(fā)了一個名為ORTC(對象實(shí)時通信)的技術(shù),該技術(shù)與WebRTC類似,不同的是它采用了不同的編解碼器,與服務(wù)器通信的協(xié)議不同,最終有可能可以成為一種擴(kuò)展了的WebRTC標(biāo)準(zhǔn)。一如往常,蘋果成為唯一無法支持WebRTC的瀏覽器。