yii2框架 电商系统在线直播开发

这段时间开发了一套基于yii2框架的电商直播系统。写下博客,也好让大家能了解下电商直播的流程。

电商系统是基于ecshop框架而来,用yii2框架重写,无pc端页面,所有yii2框架都是用来写app的接口。好了,废话少说,开始开发直播系统:

直播的核心技术简单的说就是 :
推流(app端录制视频并上传),
拉流(app端请求资源观看)。
后端核心的技术就是如果保存,如何提供资源地址。
鉴于目前的电商系统规模以及开发时间有限,并且不会用C或者给出超长时间用php实现上面的推流和拉流功能,咱们只能借助第三方的云平台。

通过初步调研,用了七牛云的直播云服务(说实话,直播保存啥的可能流量便宜,但是如果你要鉴黄服务可就相对贵了。毕竟,不得不用,X奇艺不就是给禁了)。
yii2框架 电商系统在线直播开发_第1张图片
没错,要选俩
1. 对象存储(直播后保存录播)。
2.直播云服务,提供直播流(推流、拉流、禁播流)。流名,我直接使用的主播房间号。
其中直播云服务所需要的配置有很多,什么域名啊,备案啊,公安备案啊,这些咱就不管了。大家可以参考其他人写的。主要是有个关键设置:
yii2框架 电商系统在线直播开发_第2张图片
RTMP推流管理
yii2框架 电商系统在线直播开发_第3张图片
APP那边推流是不会通知后端的,即使通知了也没用,你不知道它手机端啥时候异常断流(网络中断,直接APP退出)。
七牛提供回调,如果推流中,端中断了多少秒后,可以给你回调,这样就避免异常中断特别久,直播间无法正常关闭。
当然,你也可以写个脚本,定时查直播状态,但是这样的逻辑以及你要采样的时间啥的,就比较复杂了,暂且不提。
剩下的就交给七牛给的sdk,自己写接口逻辑了。如果大家谁还有疑问,可以私聊我啊。
另外,吐槽下。七牛sdk没有提供直播聊天的功能。咱只能扩展咱的技术栈。用个socket框架解决下(swoole,workerman),经过仔细对比,发现workerman非常好用,当然swoole也行(毕竟字母少,高大上。咳咳,c写的不会改,当然后来发现想多了)。
使用workerman的gatewayWorker 搭建聊天、商品推送、送礼啥的。看图:
yii2框架 电商系统在线直播开发_第4张图片
其实原理非常简单,gatewayWorker就是独立的服务(甚至是服务器),yii2框架和其通讯,直接调用人家给的接口即可。我大概非常简化的描述下过程:
首先,app端要和gateway服务器建立socket连接,大概长这样:
端实例化长连接
端和服务器建立好连接后,
进入聊天室 调用 yii2接口
聊天 调用 yii2接口
推送商品 调用 yii2接口
……
总之,与gateway无关了,它就是一个服务器,上面跑着N多聊天室。
好了,就说这么多。具体业务欢迎私信交流哈!~

你可能感兴趣的:(yii2)