Workerman MQTT协议通信指北

MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议,它的设计思想是轻巧、开放、简单、规范,易于实现。已经成为物联网中非常流行的通讯协议。

本篇笔记不在于普及知识,主要面向初次接触MQTT协议通信的同学,分析Wokerman使用过程中遇到的问题。

1、Workerman集成MQTT协议后,客户端可以连接吗?

答案是不可以。Workerman中集成的MQTT在通信中可以充当【客户端】的角色,可以连接到任何支持MQTT协议的服务器上来订阅主题和发布主题。但其自身不可充当【服务器】的角色。因此在使用中我们首先需要配置一台MQTT服务器,俗称“broker”。

如果你曾经采用Workerman搭建过TCP通信,这是一个很容易让新手误解的地方。新手可能会感觉直接用一个Workerman就万事大吉了。

2、MQTT通信的架构是什么样的?

MQTT通信的架构

上面架构图来自emqx官网,其中中间绿色部分即我们要搭建的mqtt broker,mqtt服务器搭建完成后,我们可以通过各种编程语言类库对服务器发起连接请求,以及主题发布和订阅。而编程语言类库中我们就可以使用workerman的mqtt扩展库与服务器进行通信。

3、我们必须要安装“composer require workerman/mqtt”吗?

答案是不必须,但是首先是PHP语言需要对通信的字节流进行编码和解码。其他编程语言也是一样。我们之所以使用这个类库,是因为我们不必再自行开发,拿来即用。同时我们也可以单独把扩展库的Protocals目录下的Mqtt.php文件复制到Workerman的Protocols目录中,只需要更改下namespace即可。

4、根据官方文档我可以实现订阅消息,但是我如何根据业务逻辑发布消息呢?

根据官方文档我们知道publish和subscribe流程如何实现。对于subscribe由于需要实时获取来自硬件方面的数据或其他客户端的数据,因此subscribe需要以cli模式守护运行在系统后台。但是public消息一般跟系统内的业务逻辑相关,如何单独实现消息发布呢?

其实很简单,以Think PHP为例,我们可以将publish写入Model中,在Model中实现mqtt的连接创建、消息发布、连接销毁即可。

波波将在明天的笔记中分享独立版的消息发布模块,敬请关注。

 

波波
你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!