• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 新聞 > 專(zhuān)家觀(guān)點(diǎn) >

    如何著(zhù)手學(xué)習WebRTC開(kāi)發(fā)

    2017-06-09 13:54:00   作者:Tsahi Levent-Levi   來(lái)源:聲網(wǎng)Agora   評論:0  點(diǎn)擊:


      說(shuō)到WebRTC,沒(méi)準兒你使用它已有些時(shí)日,當然也可能完全沒(méi)有用過(guò)。或許你已經(jīng)了解過(guò)AppRTC,亦或是基于github中的一段代碼創(chuàng )建了一個(gè)分支,并放到了自己的服務(wù)器上運行。但是現在呢,您可能會(huì )感覺(jué)到自己已經(jīng)止步于此,無(wú)法成為一名正兒八經(jīng)的WebRTC開(kāi)發(fā)人員。
    \
      WebRTC開(kāi)發(fā)人員可以說(shuō)形形色色,但論起出身淵源,通常無(wú)外乎以下兩類(lèi):
    1. 10年前做過(guò)VoIP開(kāi)發(fā)人員(這可能意味著(zhù)他們配置過(guò)Asterisk安裝實(shí)例、編寫(xiě)過(guò)自己的RTP堆棧,諸如此類(lèi))
    2. 本身即是Web開(kāi)發(fā)人員(具體從事的往往是在付費主題的基礎上實(shí)現WordPress網(wǎng)站,但也可能是構建像Facebook之類(lèi)的全球各種社交網(wǎng)站所使用的后端)
      而難題在于,WebRTC介乎于VoIP和Web這兩種全然不同的領(lǐng)域之間。
    \
      我本人又屬于哪一類(lèi)呢?其實(shí)也是VoIP開(kāi)人員出身。我為一款ASN.1 PER編/解碼器編寫(xiě)過(guò)自己的無(wú)遞歸實(shí)現代碼,采用的是在靜態(tài)內存中運行的方式。還在多種不同的操作系統上線(xiàn)性擴展過(guò)UDP/TCP套接字實(shí)現代碼。也使用C代碼進(jìn)行過(guò)多線(xiàn)程處理。更從事過(guò)如今的大多數開(kāi)發(fā)人員甚至都無(wú)法理解的一些底層工作。雖然這些都是不錯的起點(diǎn),但對于過(guò)渡到WebRTC并沒(méi)有起到實(shí)質(zhì)性的幫助作用。
      關(guān)鍵并不在于WebRTC本身,而在于了解在開(kāi)發(fā)VoIP產(chǎn)品時(shí)與開(kāi)發(fā)互聯(lián)網(wǎng)Web應用程序時(shí)所用到的不同思維模式和方法。此外,還需能夠學(xué)習新技術(shù)和新的思考方式。
      本篇博文并非要引領(lǐng)你完成整個(gè)學(xué)習歷程,但對你制定學(xué)習方案會(huì )有助益。在本文中,我們將一起探討現在可以從哪三個(gè)方面著(zhù)手來(lái)從VoIP或Web開(kāi)發(fā)人員搖身變成資深的WebRTC開(kāi)發(fā)人員。
      哪些是你不懂的?
      首先要著(zhù)手做的事情就是弄清楚你需要學(xué)習什么。一些人可能認為,要成為WebRTC開(kāi)發(fā)人員,只需要懂HTML、CSS和些許JavaScript。再從github上找到一個(gè)采用WebRTC的項目,安裝到自己的服務(wù)器上運行即可。這樣就大功告成了!
      這自然是一個(gè)不錯的著(zhù)手點(diǎn),但采用WebRTC進(jìn)行開(kāi)發(fā)并非只是學(xué)點(diǎn)兒JavaScript那么簡(jiǎn)單。也不是學(xué)會(huì )Node.js就行的。
      要想讓自己真正稱(chēng)得上一名WebRTC開(kāi)發(fā)人員,你需要從以下諸多方面著(zhù)手學(xué)習:
    • WebRTC API:要成為WebRTC開(kāi)發(fā)人員,顯而易見(jiàn)需達到這項要求
    • 前端開(kāi)發(fā):HTML、CSS和JavaScript
    • 后端開(kāi)發(fā):Node.js或其他某種現代異步開(kāi)發(fā)平臺
    • 網(wǎng)絡(luò ):TCP、UDP、HTTP、WebSocket以及介乎于這些概念之間的任何概念
    • 編碼解碼器和媒體處理:如何設計和實(shí)現代碼、采用哪些算法和技術(shù)通過(guò)SRTP將媒體經(jīng)由網(wǎng)絡(luò )發(fā)送出去。如果懂Simulcast和SVC,那就更好了。
    • 服務(wù)器端媒體處理:需要了解可用來(lái)支持組呼、實(shí)況直播和錄制等功能的不同技術(shù)
    • 故障排查和監控工具:至少要學(xué)會(huì )如何閱讀webrtc-internals轉儲文件并了解ICE故障
    • 常用框架:了解現有的流行框架以及這些框架適用的情況。例如,對Jitsi、Kurento和Janus有一定的了解也是有益無(wú)害的
      掌握了上述技能和知識,你就能夠開(kāi)發(fā)幾乎所有的實(shí)時(shí)通信產(chǎn)品。如此多的主題看起來(lái)可能令人望而生畏,不過(guò)我在下文中分享了一些資源,讓您可以相對較快地了解上述每個(gè)主題。此外需要說(shuō)明的是,這些主題你不必樣樣精通,但作為一名WebRTC開(kāi)發(fā)人員,您必須對其中的每一個(gè)主題都有基本的了解。當然,我自知我對上述主題也并非門(mén)門(mén)精通……
      至此你已經(jīng)知道了自己需要懂哪些方面,接下來(lái)我們就看看可以通過(guò)哪三種首選方式來(lái)學(xué)習所需的知識和技能。
    \
      1. 通過(guò)閱讀資料來(lái)學(xué)習WebRTC開(kāi)發(fā)
      無(wú)論是哪個(gè)主題,要想增長(cháng)知識,其中一個(gè)最佳的方式就是閱讀和緊密關(guān)注業(yè)界專(zhuān)家撰寫(xiě)的博文和教程。在這方面WebRTC也不例外。
      雖然WebRTC博客數量不多,但你依然需要在這方面多加關(guān)注,充分發(fā)掘有限博文中的價(jià)值。挑選幾個(gè)優(yōu)質(zhì)博客進(jìn)行關(guān)注即可。我之所以盡量訂閱所有博客,主要是因為我的職業(yè)要求我盡可能充分了解WebRTC市場(chǎng),而且我還需要打理WebRTC周刊博客。總結起來(lái),對于WebRTC開(kāi)發(fā)方面的核心內容,我密切關(guān)注且必讀必懂的就只有以下三個(gè)主要博客:
    • webrtcHacks:一言蔽之,提供了有關(guān)WebRTC的優(yōu)質(zhì)內容供開(kāi)發(fā)人員參考……
    • Mozilla的“推進(jìn)WebRTC”:Mozilla最近開(kāi)設了一個(gè)專(zhuān)門(mén)講解WebRTC的新博客。博客內容質(zhì)量一流,所含的信息也很實(shí)用。具體涵蓋了與WebRTC相關(guān)的一些小問(wèn)題,并提供了一些非常實(shí)用的代碼段
    • Philipp Hancke:如果說(shuō)有誰(shuí)對WebRTC無(wú)所不知的話(huà),那非Philipp莫屬。他在WebRTC以及瀏覽器行為分析方面有系統性的研究。每當他撰寫(xiě)并發(fā)布博文,我最終都會(huì )收獲至少一項新知識。
    • WebRTC周刊:沒(méi)錯。這是我和Kranky共同打理的一個(gè)博客。這個(gè)博客為您提供WebRTC的最新發(fā)展脈搏,所以關(guān)注它可以讓您更快地找到其他人撰寫(xiě)的內容,特別是那些讓我苦等很久才偶而發(fā)布一次內容的人。
      您不妨挑選幾個(gè)想要關(guān)注的博客進(jìn)行訂閱。不必對它們發(fā)布的所有內容都細細研讀,但一定要定期閱讀那些會(huì )讓您大開(kāi)眼界、甚至會(huì )懷疑自己是否是合格開(kāi)發(fā)人員的技術(shù)文章。我采取的就是這種方法,現在我已經(jīng)不再自視為開(kāi)發(fā)人員。你很可能會(huì )不由自主地采取下一步驟:打開(kāi)一個(gè)代碼編輯器,試著(zhù)運行您所閱讀的文章中公布的代碼段。
      2. 通過(guò)參加課程來(lái)學(xué)習WebRTC開(kāi)發(fā)
      閱讀有關(guān)WenRTC的內容是確保您與時(shí)俱進(jìn)的必要之舉,必須持之以恒,特別是考慮到WebRTC的發(fā)展日新月異,且目前還沒(méi)有穩定的規范發(fā)布出來(lái)。要想真正地快速培養新技能,參加一些正式培訓是可取的做法。
      網(wǎng)上已經(jīng)開(kāi)設了幾門(mén)WebRTC培訓課程,都不難找到。我觀(guān)看過(guò)的那些課程重點(diǎn)講解WebRTC API方面,這也是著(zhù)手學(xué)習WebRTC的良好切入點(diǎn)。不過(guò)難題在于,WebRTC仍未標準化,因此很多方面變化太快,導致此類(lèi)內容往往難以跟上最新發(fā)展的腳步。
      在這些課程中,我猜有兩個(gè)地方可以讓您全面了解WebRTC:
    • Google的WebRTC代碼實(shí)驗室:這是Google開(kāi)設的一門(mén)基礎入門(mén)課程,介紹如何使用WebRTC。這門(mén)課程將為您講解WebRTC的基本概念,引導您完成簡(jiǎn)單的首次概念驗證并快速獲得結果。
    • WebRTC學(xué)院:WebRTC學(xué)院的WebRTC課程著(zhù)重講解WebRTC     API及其使用方式。對于急著(zhù)直接使用WebRTC進(jìn)行開(kāi)發(fā)的人員,建議從這項資源著(zhù)手學(xué)習。
    • 高級WebRTC體系結構:這是我在本網(wǎng)站上開(kāi)設的一門(mén)課程。在此課程中,我決定不以WebRTC API作為講解重點(diǎn),直接跳過(guò)這方面的內容;并嘗試更多地講解后端方面,讓學(xué)員具備全面的后端構建能力,從而可以自行構建產(chǎn)品體系結構。
    • Kranky   Geek:對于視覺(jué)元素類(lèi)型,我建議觀(guān)看由Kranky Geek整理的主題(我也是該團隊的一員)。您會(huì )觀(guān)看到就具體WebRTC開(kāi)發(fā)主題提供的優(yōu)質(zhì)內容。
      除了WebRTC培訓之外,務(wù)必還要觀(guān)看一些其他的課程,例如Udemy、Codecademy或Pluralsight等網(wǎng)站上提供的全棧Web開(kāi)發(fā)培訓或Node.js開(kāi)發(fā)課程。
    \
      有沒(méi)有什么書(shū)可讀?
      幾個(gè)月來(lái)我一直有個(gè)困擾揮之不去:已經(jīng)有一年多時(shí)間沒(méi)有關(guān)于WebRTC的新書(shū)出版了。
      我記得上次有WebRTC新書(shū)出版還是2015年6月的事情。
      現在,如果您仍然習慣于通過(guò)讀書(shū)來(lái)學(xué)習新知,可以查看WebRTC圖書(shū)一覽,時(shí)至今日它依然有效。
      如果您的開(kāi)發(fā)工作與Web瀏覽器有關(guān),不要忘了閱讀高性能瀏覽器網(wǎng)絡(luò )(特別是您打算使用WebRTC打造自己的信號系統時(shí))。
      3. 通過(guò)動(dòng)手實(shí)踐來(lái)學(xué)習WebRTC開(kāi)發(fā)
      在實(shí)際項目中付諸實(shí)踐并撰寫(xiě)心得有助于進(jìn)一步鞏固閱讀和了解的內容
      閱讀有關(guān)WebRTC開(kāi)發(fā)的內容會(huì )讓您保持思維敏銳。學(xué)習WebRTC開(kāi)發(fā)課程則有助于您培養新技能和透徹了解這項技術(shù)。但要想真正成長(cháng)為一名開(kāi)發(fā)人員,您需要找到機會(huì )有效運用學(xué)到的所有知識和技能。
      如何才能有效地運用學(xué)到的知識和技能呢?我能想到的方式有四種:
    • 開(kāi)發(fā)個(gè)人項目——可以是博客、個(gè)人作品集、個(gè)人愛(ài)好網(wǎng)站等。可以選擇一些能夠讓您絞盡腦汁,在開(kāi)發(fā)過(guò)程中需要不斷思索解決方案的個(gè)人項目。我想Muaz     Khan在這方面是做得最好的。Brian Ho最近分享了關(guān)于在客戶(hù)端/服務(wù)器Web游戲中使用WebRTC的經(jīng)驗心得,我也非常喜歡。
    • 為付費客戶(hù)開(kāi)發(fā)產(chǎn)品——有太多的服務(wù)提供商都在尋找WebRTC開(kāi)發(fā)能手,數量之多可能超乎您的想象。
    • 撰寫(xiě)文章談?wù)勛约簩W(xué)習的新技能并將它們發(fā)布在自己的博客上,最好提交到webrtcHacks。要想確保自己真正理解了某個(gè)主題,撰寫(xiě)一篇關(guān)于該主題的教程可以說(shuō)是最好的辦法。
    • 成為WebRTC專(zhuān)業(yè)人士——掌握了必備知識并積累了一些經(jīng)驗后,您可能想要加入一家正在積極使用WebRTC開(kāi)發(fā)產(chǎn)品的WebRTC外包公司。不妨聽(tīng)聽(tīng)Germán     Goldenstein是如何說(shuō)的——作為開(kāi)發(fā)人員,能有他這樣的職業(yè)經(jīng)歷可以說(shuō)十分難得。這篇文章也讓我想明白了自己為何如此喜歡開(kāi)發(fā)工作和與開(kāi)發(fā)人員協(xié)同合作。
      今后還需要從哪些方面著(zhù)手學(xué)習?
      我們這個(gè)行業(yè)有一個(gè)悖論。
      一方面,WebRTC極為簡(jiǎn)單(可以對比一下在WebRTC問(wèn)世前相同的開(kāi)發(fā)項目需要的工作量)。但同時(shí),懂得如何使用它的資深開(kāi)發(fā)人員卻又不多。與一些正在尋求WebRTC人才的雇主聊聊,您就知道找到合適的人有多難。有時(shí),他們在與懂得如何開(kāi)發(fā)網(wǎng)站或移動(dòng)應用但對WebRTC一無(wú)所知的外包供應商合作后,感到非常不滿(mǎn)意,所以多數雇主最終都選擇了在內部培養WebRTC開(kāi)發(fā)人員。
      不過(guò),如果您不滿(mǎn)足于從github中復制粘貼Hello World WebRTC概念的實(shí)現代碼,希望不僅僅將WebRTC當做一種愛(ài)好,而是要成為一名真正的WebRTC開(kāi)發(fā)人員,您需要制定一份學(xué)習方案并嚴格按照方案學(xué)習。
      方案中應包含三項核心的學(xué)習活動(dòng):閱讀資料、參加課程和動(dòng)手實(shí)踐。只要能夠在這三個(gè)方面持之以恒,用不了多久您就會(huì )從業(yè)余愛(ài)好者搖身變成一名專(zhuān)業(yè)的WebRTC開(kāi)發(fā)人員。
      當然,你也可以直接使用Agora SDK,從編解碼到服務(wù)端的都涵蓋了。

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 多伦县| 栾川县| 五华县| 潼南县| 日土县| 南开区| 门源| 犍为县| 定南县| 历史| 岳池县| 西峡县| 内丘县| 诏安县| 略阳县| 华安县| 洪雅县| 射洪县| 彭山县| 蕉岭县| 玛多县| 大化| 凤山市| 太仆寺旗| 衡东县| 铜梁县| 扬中市| 桐乡市| 新河县| 文山县| 东源县| 黄浦区| 肃北| 清水县| 商水县| 拜泉县| 贵德县| 奉化市| 澄江县| 五常市| 罗甸县| http://444 http://444 http://444 http://444 http://444 http://444