編譯EasyRTC新版本採用ProtocolBuffer(pb)接收不同型別資料如何判斷?
阿新 • • 發佈:2021-08-16
ProtocolBuffer(pb)所做事情其實類似於xml、json,也就是把某種資料結構的資訊依照某種格式儲存起來,ProtocolBuffer(pb)效率高,支援多種程式語言。
在編譯EasyRTC新版本時,我們採用了ProtocolBuffer(pb)實現部分功能,其中在EasyRTC視訊通話接收訊息時,由於傳送檔案buffer格式問題,傳輸的資料不能經過封裝,所以檔案接收不能根據接收的type值進行判斷。
我們先講一下接收資訊和檔案的區別。
接受訊息資料如下:
接受檔案資料某個切片如下:
檔案和資訊的接收資料型別不同,因此我們需要設定系統根據資料型別進行判斷。
判斷接收資料型別執行資訊接收,參考程式碼如下:
//接收訊息處理 onReceiveMessageCallback = (event) => { this.receiveState = false this.fileTip = false if (typeof event.data === 'string' ? true : false){ this.msgData.push(JSON.parse(event.data)) this.getTipType('msg') } if (typeof event.data !== 'string' ? true : false){ this.receiveBuffer.push(event.data) //將接收到的資料新增到接收快取裡 this.receivedSize += event.data.byteLength; //設定當前接收檔案的大小 let filesInfo = JSON.parse(JSON.stringify(this.filesData)) if (this.receivedSize === filesInfo[0].size){ const received = new Blob(this.receiveBuffer) //生成Blob檔案 this.receiveBuffer = [] // 將快取資料置空 } this.getTipType('file') } }
EasyRTC在未來的運用中,將不僅僅適用於政府和企業視訊會議,還適用於各種大屏場景下的音視訊傳輸,如遠端教育培訓、多人通話以及室內監控等等,更多的專案使用場景,歡迎大家瞭解和測試,共同將EasyRTC的行業運用變得更加豐富。