最近手頭有項目須要搭建一個在線直播教室的應用,通過這幾年的快速發展,在線直播教育這個領域也有很多平臺提供了相關的視音頻服務。相比其餘行業的視音頻服務,在線直播教育的硬性需求主要在如下幾點:node
目前 Agora 有兩個版本的 eEducation demo,web 版本 demo(eEducation-with-Web) 基於Express(Server) + React(Client),Electron 版本 demo(Agora e-Education Demo with Electron) 則是基於 Express(Room Control + Recording)+ Electron(Client)。我實在才疏學淺,對於 Electron 瞭解甚少。並且項目目前也是主要 web 和微信小程序,因此直接 pass Electron 選擇 web 版本了。react
搭建環境: 服務器環境: ubuntu 18.04 + nodejs 8.10.0 瀏覽器環境: chorme 74.0.3729linux
註冊聲網帳號,建立項目,獲取 APP ID。這些都是平常流程了,沒啥好交待的,不過聲網的各位實在太熱情了,註冊完次日客服就打電話回訪。技術支持也加微信問是否須要什麼幫助,服務真是太熱情了。git
git clone https://github.com/AgoraIO-Usecase/eEducation-with-Web.git
,將項目克隆到本地。github
分別進入 server
和 client
目錄下, 使用 npm install
安裝依賴。Client
目錄下的安裝卻是沒什麼問題, Server
目錄下安裝 agora-node-rtm 包的時候出錯,編譯時報 fatal error: event2/buffer.h: No such file or dicectory
。嗯,缺了 libevenet 庫。這個庫是一個基於事件觸發的網絡庫,是 webrtc 的必須庫之一。有下面一些特色和優點:web
npm install
,繼續報錯 fatal error: uuid/uuid.h: No such file or dicectory
,那就 sudo apt-get install uuid-dev
。fatal error: IAgoraService.h: No such file or dicectory
,這個名字一看就是 agora 本身寫的頭文件了。沒辦法了,先去看看 agora-npm-rtm 包有沒安裝說明吧。sudo npm install -g node-gyp
安裝完成。libagora_rtm_sdk.so
到 /usr/lib/
下,才注意到文件夾下有 docker-compose.yml
和 Dockerfile
兩個文件。打開 Dockerfile
,發現是有安裝 uuid-dev
和 libevent
,也是將 libagora_rtm_sdk.so
放入到 /usr/lib/
目錄下,可是並未說起 include
目錄下的三個頭文件。我將這三個文件直接拷貝到 /usr/include/
目錄下了。 再也不報 fatal error: IAgoraService.h: No such file or dicectory
的錯誤,但,後面的錯誤就是我沒法解決的了:error: 'agora::rtm::CHANNEL_MESSAGE_ERR_CODE' has not been declared
。server
目錄下的問題目前我是沒辦法解決了,那就看下 client 能不能跑起來。打開目錄後首先查看
README.md
,簡要介紹了怎麼運行、測試、構建。可是 不是應該有地方配置 APP ID 的嗎?先無論 APP ID,
npm start
測試下,嗯, react 順利構建並跑起來了,瀏覽器訪問,而後...仍是要 APP ID。 11. ok,本身找下吧,翻了下目錄,沒有任何像是 configure 的文件。那看下代碼,index.tsx 入口沒有任何提示,查看引入的文件,在
routes/App.tsx
下發現 是從環境變量引入的
REACT_AOO_AGORA_APPID
。好吧,那就
export REACT_AOO_AGORA_APPID=MY_AGORA_APP_ID
。再次起航。 12. 終於可以順利訪問了。界面蠻漂亮,惋惜沒有服務端,登入不進去。