最近几月的直播项目

整理一下最近几月使用到的 trtc 第三方包

业务需求

跟我们日常开发一样,先看需求,再讲技术。如何讲需求的核心快速的讲明白一直是个大问题。

讲的人滔滔不绝,听的人昏昏欲睡。稀里糊涂讲完了,底下人稀稀拉拉的鼓掌,然后散场,整个一黑色幽默……

在开发小程序过程中,我也想如何能让一个开发快速接手我的项目,如何更清晰的表明代码结构,以及开发时的意图。

直到我找见了这篇文章:

前端状态管理请三思

(很巧合,溯阳在这篇文章底部客串了哈哈哈哈

状态机

状态机这玩意儿确实是个老古董,在编译原理的第一个阶段词法分析时,总会遇到它,扯远了……

可以这样理解它,状态机由很多状态构成,状态之间可以流转,流转的条件是触发某些 “事件”。

比如我们坐电梯,在一楼时走进电梯,当前状态就是 floor_1_state,当我们按了二楼时,click_goto_2,触发状态流转,电梯停在二楼,此时状态变更为 floor_2_state。电梯系统,就是一个典型的有限状态机(FSM)。有限状态机可以描述我们日常生活中的大多行为和状态,你可以大胆发挥想象。

构造一个状态机的好处,一是,状态流转很清晰,特定的事件触发特定的状态,一般配合状态转化图/表食用。二是,状态的流转是固定的,假设我们的状态流转是 A->B->C,那在用户行为触发的时候,绝对不会出现 B 状态转换到 A 状态的情况。

状态转换表

在我们构造一个状态机时,状态转换表是首先要构造的,以下是视频面试项目的状态转换表。

状态 行为 状态
角色为空状态 面试官进入 面试官面试未准备状态
角色为空状态 求职者进入 求职者面试未就绪状态
角色为空状态 主持人进入 主持人面试未就绪状态
求职者面试未就绪状态 面试官进入 求职者未准备
面试官面试未准备状态 面试官点击准备 面试官准备状态
面试官准备状态 面试官点击取消准备 面试官面试未准备状态
主持人面试未就绪状态 求职者进入 求职者未准备
求职者未准备 求职者点击准备面试 面试准备状态
面试准备状态 主持人点击面试开始 面试开始
面试开始 面试官点击结束面试 面试结束
面试结束

三列分别是,当前状态、当前状态接收的行为以及转换后的状态。假如当前状态为空,当面试官进入的时,状态就转换到了 面试官面试未就绪状态。

状态转化表构造好后,就该画转换图了,转换图是一种更清晰的描述状态的手段。

状态转换图