最近手头有项目须要搭建一个在线直播教室的应用,通过这几年的快速发展,在线直播教育这个领域也有很多平台提供了相关的视音频服务。相比其余行业的视音频服务,在线直播教育的硬性需求主要在如下几点: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. 终于可以顺利访问了。界面蛮漂亮,惋惜没有服务端,登入不进去。