业务模块

后台以ThinkPHP框架为主框架,因业务需要又加入了WorkerMan Socket框架。
此后台开发可分为以下三部分:

  1. 与终端设备建立Tcp连接,接收终端发来的数据并做解析,业务逻辑处理并入mysql库
  2. 移动端小程序API的开发
  3. 后台cms管理系统的开发

删除线表示已完成


下面先讲下Tcp相关的业务处理:

服务的启动、线程设置、协议定义等等初始化工作请参考ThinkPHP扩展项Workerman即可。

WorkerMan中有两个重要的类Worker与Connection。

每个客户端连接对应一个Connection对象,可以设置对象的onMessage、onClose等回调,同时提供了向客户端发送数据send接口与关闭连接close接口,以及其它一些必要的接口。

可以说Worker是一个监听容器,负责接受客户端连接,并把连接包装成connection对象式提供给开发者操作。


$connection对象有一个非常重要的属性:id
int Connection::$id
连接的id。这是一个自增的整数。

注意:workerman是多进程的,每个进程内部会维护一个自增的connection id,所以多个进程之间的connection id会有重复。
如果想要不重复的connection id 可以根据需要给connection->id重新赋值,例如加上worker->id前缀。

这个id会用于服务器向指定设备的主动推送消息


客户端仅能收到两种消息:
一种是设备向后台发送数据后接收到的返回消息,另一种就是后台主动向指定设备推送的消息。
所以,设备端应根据接收到的后台数据的格式的不同,分别做相应的处理。

后台主动推送消息的情况为:用户在web端主动取消油桶的报警信息。

服务器向指定设备的主动推送消息的实现

请参考:这个例子

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,891评论 18 139
  • 秋天的蝴蝶 你躲在秋天的背后 轻哼花丛中学会的歌曲 那是一种舞蹈的遐思 让风迷路的音乐 是她的眼神 在雨中 ...
    屈冰阅读 944评论 12 32
  • 都讲了一个男人经历了人生的不如意,最终找到幸福的故事。一个是求之不得,一个是失而复得。在患得患失中打转,最后找到初...
    zhenbaozhu2001阅读 261评论 0 1
  • 感觉越来越好了,所有的一切都是很好的开始。进入五年级,儿子这几天的表现让我们所有人都刮目相看,晚托班的老师跟他开玩...
    果然妈阅读 280评论 3 2