licode

1.Licode模塊

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

2.Nuve源碼分析

2.1目錄結構

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

2.2 nuveAPI整體架構

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

2.3 接口層

2.3.1 nuve.js配置路由

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

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

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

相關閱讀更多精彩內容

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

友情鏈接更多精彩內容