licode

1.Licode模塊

  • Erizo 基于webRTC針對視屏會議場景的一對多組件
  • Erizo API Erizo的Nodejs版本
  • Erizo Controller 負責管理視頻會議sessions
  • Nuve 負責管理服務器資源(會議房間,與會用戶,加入憑證)

2.Nuve源碼分析

2.1目錄結(jié)構(gòu)

  • nuveAPI Nuve服務端API
  • nuveClient Nuve客戶端API

2.2 nuveAPI整體架構(gòu)

nuve-api-architecture.png
  • 接口層
    接口層的nuve.js負責定義路由,調(diào)用響應的業(yè)務邏輯層的resource類來完成CRUD操作,并且通過auth/nuveAuthenticator.js中間件進行權(quán)限驗證
  • 業(yè)務邏輯層
    主要負責管理會議房間,用戶資源,憑證資源
  • 數(shù)據(jù)邏輯層
    通過調(diào)用dataBase.js對實際的數(shù)據(jù)庫進行相應操作
  • 數(shù)據(jù)庫mongodb
    存儲各種資源數(shù)據(jù)

2.3 接口層

2.3.1 nuve.js配置路由

在nuve.js中首先通過中間件驗證發(fā)送請求用戶是否有相應權(quán)限

app.get('*', nuveAuthenticator.authenticate);
app.post('*', nuveAuthenticator.authenticate);
app.put('*', nuveAuthenticator.authenticate);
app.patch('*', nuveAuthenticator.authenticate);
app.delete('*', nuveAuthenticator.authenticate);

接著,創(chuàng)建Restful API可以對相應的資源進行操作

app.post('/rooms', roomsResource.createRoom);
app.get('/rooms', roomsResource.represent);

app.get('/rooms/:room', roomResource.represent);
app.put('/rooms/:room', roomResource.updateRoom);
app.patch('/rooms/:room', roomResource.patchRoom);
app.delete('/rooms/:room', roomResource.deleteRoom);

app.post('/rooms/:room/tokens', tokensResource.create);

app.post('/services', servicesResource.create);
app.get('/services', servicesResource.represent);

app.get('/services/:service', serviceResource.represent);
app.delete('/services/:service', serviceResource.deleteService);

app.get('/rooms/:room/users', usersResource.getList);

app.get('/rooms/:room/users/:user', userResource.getUser);
app.delete('/rooms/:room/users/:user', userResource.deleteUser);

2.3.2 cloudHandler.js連接Erizo服務

cloudHandler可以調(diào)用Erizo服務中的方法,具體通過消息隊列來實現(xiàn)RPC(遠程過程調(diào)用)。
整個RPC的原理是,Nuve服務和Erizo服務維護了兩個消息隊列,Nuve服務通過隊列一來發(fā)布任務,然后將回調(diào)函數(shù)保存在本地,Erizo服務從隊列一中取任務執(zhí)行后,將執(zhí)行的結(jié)果放入隊列二,Nuve服務從隊列二獲取執(zhí)行結(jié)果,并從本地找到對應的回調(diào)函數(shù),傳入結(jié)果參數(shù),就能完成一次RPC。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 職業(yè)和事業(yè)只有一字之差,但卻有著完全不同的含義。你把自己的工作當成職業(yè)還是當成事業(yè),反映著你完全不同的心理狀態(tài),最...
    心靜如水3215閱讀 844評論 0 0
  • 兩天前,端午前的一個下午我昏睡在沙發(fā)上,聽著微信聲音不停地響絲毫不想去搭理。等到醒來時發(fā)現(xiàn)小明給我發(fā)的消息,內(nèi)心里...
    歡璽閱讀 740評論 0 0
  • 多久之后,我還是習慣了低頭走路。我也想抬頭挺胸,卻總不自覺的看向大地。 每天醒來,睜開眼,總要確...
    羞答答的阿貍閱讀 202評論 0 0

友情鏈接更多精彩內(nèi)容