Wallogit.com
2017 © Pedro Peláez
Asynchronous MQTT client for PHP based on workerman., (*1)
composer require workerman/mqtt
中文文档, (*2)
subscribe.php, (*3)
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$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();
Run with command php subscribe.php start, (*4)
publish.php, (*5)
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$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();
Run with command php publish.php start, (*6)
Client::__construct()Client::connect()Client::publish()Client::subscribe()Client::unsubscribe()Client::disconnect()Client::close()callback onConnectcallback onMessagecallback onErrorcallback onCloseCreate an instance by $address and $options., (*8)
$address can be on the following protocols: 'mqtt', 'mqtts', 'mqtt://test.mosquitto.org:1883'., (*9)
$options is the client connection options. Defaults:, (*10)
keepalive: 50 seconds, set to 0 to disableclient_id: client id, default workerman-mqtt-client-{$mt_rand}
protocol_name: 'MQTT' or 'MQIsdp'protocol_level: 'MQTT' is 4 and 'MQIsdp' is 3
clean_session: true, set to false to receive QoS 1 and 2 messages while
offlinereconnect_period: 1 second, interval between two reconnectionsconnect_timeout: 30 senconds, time to wait before a CONNACK is receivedusername: the username required by your broker, if anypassword: the password required by your broker, if anywill: a message that will sent by the broker automatically when
the client disconnect badly. The format is:
topic: the topic to publishcontent: the message to publishqos: the QoSretain: the retain flagresubscribe : if connection is broken and reconnects,
subscribed topics are automatically subscribed again (default true)bindto default '', used to specify the IP address that PHP will use to access the networkssl default false, it can be set true or ssl context see http://php.net/manual/en/context.ssl.phpdebug default false, set true to show debug infoConnect to broker specified by the given $address and $options in __construct($address, $options)., (*12)
Publish a message to a topic, (*14)
$topic is the topic to publish to, String
$message is the message to publish, String
$options is the options to publish with, including:
qos QoS level, Number, default 0
retain retain flag, Boolean, default false
dup mark as duplicate flag, Boolean, default false
$callback - function (\Exception $exception), fired when the QoS handling completes, or at the next tick if QoS 0. No error occurs then $exception will be null.$properties - array MQTT5 user propertiesSubscribe to a topic or topics, (*16)
$topic is a String topic or an Array which has as keys the topic name and as value
the QoS like array('test1'=> 0, 'test2'=> 1) to subscribe.$options is the options to subscribe with, including:
qos qos subscription level, default 0$callback - function (\Exception $exception, array $granted)
callback fired on suback where:
exception a subscription error or an error that occurs when client is disconnectinggranted is an array of array('topic' => 'qos', 'topic' => 'qos') where:topic is a subscribed to topicqos is the granted qos level on it$properties - array MQTT5 user propertiesUnsubscribe from a topic or topics, (*18)
$topic is a String topic or an array of topics to unsubscribe from$callback - function (\Exception $e), fired on unsuback. No error occurs then $exception will be null..$properties - array MQTT5 user propertiesSend DISCONNECT package to broker and close the client., (*20)
Close the client without DISCONNECT package., (*22)
Emitted on successful connection (CONNACK package received)., (*24)
function (topic, message, client, properties) {}, (*26)
Emitted when the client receives a publish packet
* $topic topic of the received packet
* $content payload of the received packet
* $mqtt Client instance.
* $properties array MQTT5 user properties, (*27)
Emitted when something wrong for example the client cannot connect broker., (*29)
Emitted when connection closed., (*31)
MIT, (*32)