swoole能否应用于物联网的数据收集(下位机,使用MQTT协议)或上位机?

发布于 2022-09-12 01:19:54 字数 760 浏览 34 评论 0

swoole能否应用于物联网的数据收集(下位机,使用MQTT协议)或上位机?
我是做WEB开发和系统集成的。有段时间经手一个联网项目,当时因为时间赶,也不熟悉,采用了比较传统的.net选型,购买别人的系统。当时了解了一下物联网海量数据收集、传输、存储以及消息订阅、通知一系列功能都应用于物联网的多种场景。所以一直想找一软来尝试。也考虑过swoole。
现在swoole这么成熟,它能否胜任这样的工作:
传感器-->下位机(swoole安装于linux盒子)-->(传输)--->上位机(swoole服务器)
有兴趣的朋友能否一起讨论一下!(扣扣117801633)### 题目描述

题目来源及自己的思路

swoole能否应用于物联网的数据收集(下位机,使用MQTT协议)或上位机?
我是做WEB开发和系统集成的。有段时间经手一个联网项目,当时因为时间赶,也不熟悉,采用了比较传统的.net选型,购买别人的系统。当时了解了一下物联网海量数据收集、传输、存储以及消息订阅、通知一系列功能都应用于物联网的多种场景。所以一直想找一软来尝试。也考虑过swoole。
现在swoole这么成熟,它能否胜任这样的工作:
传感器-->下位机(swoole安装于linux盒子)-->(传输)--->上位机(swoole服务器)
有兴趣的朋友能否一起讨论一下!(扣扣117801633)### 题目描述

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
暂无

你期待的结果是什么?实际看到的错误信息又是什么?

一直交流探讨

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

咆哮 2022-09-19 01:19:54

可以的,使用Swoole的话,几行代码就能启动一个 MQTT 服务器:

$server = new Swoole\Server('127.0.0.1', 9501, SWOOLE_BASE);

$server->set([
    'open_mqtt_protocol' => true, // 启用 MQTT 协议
    'worker_num' => 2,
    'package_max_length' => 2 * 1024 * 1024,
]);

$server->on('receive', function ($server, $fd, $from_id, $data) {
    var_dump(strlen($data), $data);
});

$server->start();

通过设置 open_mqtt_protocol 选项,启用后会解析 MQTT 包头,Worker 进程的 onReceive 事件每次会返回一个完整的 MQTT 数据包,这样就可以使用 Swoole 作为 MQTT 服务器端。

而这里的重点在于 MQTT 协议解析,当收到一个 MQTT 数据包之后,如何将字节流转换为 PHP 开发者能够直接操作的数据?

这里就需要 PHP 开发者了解 MQTT 协议,知道PHP如何去处理字节流。

当然也有一些现成的 PHP library 和扩展可以直接使用,在GitHub上都能搜到。

这里要说一个首个支持 MQTT 5.0协议的 PHP library:simps/mqtt,适用于 PHP 的 MQTT 协议解析和协程客户端。

支持 MQTT 协议 3.1、3.1.1 和 5.0 版本,支持QoS 0、QoS 1、QoS 2。

也提供了一些示例,可以进行参考:examples

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文