最近对接硬件做了两个项目,用到了swoole
第一个是门禁系统,需要远程开门、离线报警、定时开门、离线刷卡等功能
1.远程开门:
目前用cli创建个临时客户端连接服务端发送命令,服务端处理完成后客户端根据返回状态判断是否开启成功
2.离线报警
客户端断网后并不会服务端的closed()并不能检测到,所以用了swoole自带的心跳检测工具,在出发后会添加报警
3.定时开门
用swoole_timer_tick轮询,有要开门的请求再通过远程开门的原理开门。
4.离线刷卡
卡号写入门禁
另一个是小区门口的道闸,在近处门后不但记录进出照片还要显示屏上显示车牌号等信息。这个功能更简单,但是因为是定制原因,厂家好多功能没完善,只能自己想办法。
比如没有为每个显示屏设置唯一序列号。另外是没有心跳。
唯一序列号我用到的是显示屏设置的dns。因为服务端没用域名,所以dns也就没用了。
这两个项目都没把心跳当做一般心跳处理(即监听是否持续在线,可以直接用swoole自带的心跳)。心跳中一般包含设备唯一序列号,在此项目中没有心跳但我又想获取唯一序列号,只能在显示屏与服务端建立连接时发送指令获取显示屏的dns,再把dns(唯一序列号)和通道保存到数据库中。这样我可以根据dns查找通道就可以指定显示屏发送内容了。