1
转自https://da.gabrieworks.com/19287

openstf 的手机占用流程
最近读了openstf的源代码,从开始完全没有头绪到现在简单的操作可以快速找到相应代码,并能进行简单的改造,收获颇深,下面以openstf的手机占用流程为例,分析源代码的构成,希望对其他对openstf源码感兴趣的同学有帮助,不正确的地方也欢迎了解的同学指正
首先如stf官方文档给出的整个架构总共分成app、api、websocket、processor、device、provider、triproxy这样几个模块,每个模块具体的功能如下:
1、app模块:使用的ArgularJs,mvc模型,主要用于前端的显示、逻辑处理和发起请求,http与socket请求
2、api模块:独立于前端页面的api接口模块,对外提供http接口返回手机列表信息、占用手机等,可以直接提供给第三方系统,采用了swagger框架,具体api接口可以参考官网文档
3、websocket模块:主要用于与前端的通信,会和数据库进行简单的交互
4、processor模块:负责后端功能逻辑的处理,在手机占用中主要接收手机的消息并根据不同的消息做不同的响应处理,返回给前端
5、triproxy模块:代理模块,目前了解的功能中暂时没有特别大的作用,只是代理转发的作用
6、provider模块:管理手机的接入,将手机与其他模块连接打通
7、device模块:这个模块的进程启动时机比较特殊,并非部署的时候人工启动,而是provider进程fork出的子进程,在手机接入的时候
下面就是手机占用各个模块的交互流程
1、app发起group.invite字符串
2、websocket模块接收字符串并发送封装GroupMessage消息进行发送(消息采用PB的协议封装)
3、device模块接收GroupMessage消息进行占用判断
4、唤醒设备中service进程
5、合理情况下发送JoinGroupMessage消息通知
6、processor模块接收JoinGroupMessage消息进行数据库处理
7、发送到websocket模块通知前端device.change消息
8、app接收到更新界面上状态的显示
具体app前端与后端交互的流程图参考如下:
手机占用api接口的流程图参考如下:
个人觉得stf的代码逻辑非常清晰,不过始终有一点不明白,为什么作者一定要用nodejs而不用其他的方式来实现呢?

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号