您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman异步消息队列组件-mqtt
发布时间:2021-12-30 23:00:08编辑:雪饮阅读()
安装依赖
[root@localhost workerman]# composer require workerman/mqtt
Using version ^1.1 for workerman/mqtt
./composer.json has been updated
Running composer update workerman/mqtt
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking workerman/mqtt (v1.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading workerman/mqtt (v1.1)
- Installing workerman/mqtt (v1.1): Extracting archive
Generating autoload files
1 package you are using is looking for funding.
Use the `composer fund` command to find out more!
mqtt订阅者与发布者实现:
mqtt订阅者:
<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->subscribe('test');
};
$mqtt->onMessage = function($topic, $content){
var_dump($topic, $content);
};
$mqtt->connect();
};
Worker::runAll();
mqtt发布者:
<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->publish('test', 'hello workerman mqtt');
};
$mqtt->connect();
};
Worker::runAll();
订阅者与发布者运行时:
订阅者运行后并有发布者运行时:
[root@localhost workerman]# php subscribe.php start
Workerman[subscribe.php] start in DEBUG mode
------------------------------------- WORKERMAN --------------------------------------
Workerman version:4.0.26 PHP version:7.3.31
-------------------------------------- WORKERS ---------------------------------------
proto user worker listen processes status
tcp root none none 1 [OK]
--------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
string(4) "test"
string(183) "{"Alarm_3":true,"Alarm_1":false,"Alarm_2":false,"Alarm_4":true,"S_Gate_Open_Hour":5,"S_Gate_Open_Min":29,"Alarm_Out_1":false,"Alarm_Out_2":false,"Alarm_Out_3":true,"Alarm_Out_4":true}"
string(4) "test"
string(5) "enter"
string(4) "test"
string(5) "enter"
string(4) "test"
string(20) "hello workerman mqtt"
string(4) "test"
string(5) "enter"
发布者运行时:
[root@localhost workerman]# php publish.php start
Workerman[publish.php] start in DEBUG mode
------------------------------------- WORKERMAN --------------------------------------
Workerman version:4.0.26 PHP version:7.3.31
-------------------------------------- WORKERS ---------------------------------------
proto user worker listen processes status
tcp root none none 1 [OK]
--------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
个人理解:
订阅者订阅地址和发布者发布地址一样即可,类似于workerman的http服务端与http客户端一样,
有效小区别就是http服务端可以监听所有ip地址(0.0.0.0),http客户端则是选择公网,或者在环境条件允许下选择内网也可以连接。
关键字词:workerman,异步,mqtt