首页 > 应用开发 > IT综合 > 接入直播,是实现电商直播源码的一环
在src目录下个新建api文件夹,api下新建modules文件夹和index.js文件。其中index.js是我们api的统一入口文件,modules中则是存放电商直播源码各个api接口。在index.js中统一收集所有的api接口,然后再main.js中将api接口挂载到vue的原型上,以后再所有的.vue文件下,我们都可以直接通过this.$api来直接调用api接口。老铁们是不是感觉挺方便的呀~
main.js中加入如下代码
livingRoom.js
index.js
vuex是一个统一的状态管理器,简单的来说就是保存在vuex中的数据是全局统一的。
src目录下新建store文件夹,store下新建modules文件夹和index.js文件。其中index.js是我们vuex的统一入口文件,modules中则是存放电商直播源码各个模块中的数据。
index.js
modules/room.js
修改main.js
可能这时候就会有老哥问上面部署了一堆vuex相关的配置,到底有什么用呀?而且为啥要把api接口的丢到vuex中的actions呢?直接发起api请求它不香吗?有这些疑问就对了,小羽当初刚学vue的时候也是有这些疑问的。
为啥我们要把数据丢到vuex中呢?主要是当我们可能有几个页面都会用到相同的数据,总不能每打开一次页面就发起一次请求吧?如果使用了vuex之后,我们的单页面应用就只需要发起一次请求,接着将得到的数据存放在vuex中,以后电商直播源码的页面都可以直接读取vuex中的数据,而不用一直发起api请求。
此外,vuex有一个很重要的特点,就是响应式的。当我们修改vuex中的数据时,电商直播源码的页面也是会跟随着变化的。因此,我们可以直接将api接口封装到vuex中,以后就直接调用action的方法,然后再action中发起api请求,将得到的数据再commit到mutation中。然后就会响应式的更新我们的前端页面
好了,终于配置好上面的一大堆东西了,是时候展现真正的技术,咳咳,是时候接入前端页面啦。
views/home/roomList.vue中
使用vuex中的语法糖——mapstate,引入roomList
使用vuex中的语法糖——mapActions,引入action中的方法
我们上一期的切图中是使用假数据进行切图的,那我们现在就需要把假的数据删除,然后接入api接口。
1.删除data(){}中的roomList。
2.重写methods中的searchType方法
然后这是当前的roomList.vue中的script部分代码
电商直播源码顶部栏的话我们只需要接入一个vuex中的setRoomList方法就可以了
src/components/liveHeader.vue
接入vuex
在搜索按钮中绑定setRoomList方法
保存之后我们就可以发现电商直播源码首页的左侧列表和搜索功能都是正常的了,也可以点击进入直播的房间,但是房间的信息却不对。别着急,我们现在就接入房间详情。
修改src/views/live/room.vue中的mounted,主要是将this.roomDetail中的虚拟数据替换为api接口中获取的数据。此时,我们切换房间后,房间的相关信息也能正常显示了。
然后就是重点啦,在nextTick()中我们将会对直播的视频进行初始化渲染。
修改src/assets/js/config.js中的baseUrl(理论上127.0.0.1和localhost是一样的,但是小羽使用127.0.0.1的时候无法获取到视频流,原因未知)
其实到这里电商直播源码的核心功能——直播基本完成啦~~~
老铁们是不是有点点小激动!!!【手动狗头】
直播走起!
打开obs,进行相关的设置。然后点击开始推流。打开对应的直播间就阔以看到我们的直播啦,是不是成就感满满的~
但是我们这个电商直播源码还是有一点问题的,因为我们的直播是通过直播间的id进行推流的,只要知道我们的直播间id就可以随便直播了,所以这点是不合理的。
因此,小羽的设想是新增主播的直播密钥,然后在中间用node.js再添加一个反向代理层,当电商直播源码用户进入直播间后通过直播间的id进入到node.js,接着反向代理到主播通过直播密钥推流的视频。
这样一来用户就无法知道主播的密钥,但是却可以正常的看视频。
小羽这边由于知识所限,暂时无法实现http代理到stream流。如果各位看官老爷们有好的想法,也可以告诉小羽,先谢过啦~【乖巧】
本期小羽主要给大家介绍了电商直播源码的vuex和api接口的接入,初步完成了核心功能——直播搜索和视频直播功能。
声明:本文由云豹科技转发自小羽同学博客,如有侵权请联系作者删除
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70002045/viewspace-2808233/ ,如需转载,请注明出处,否则将追究法律责任。