Asynchronous MQTT client for PHP based on workerman.
composer require workerman/mqtt
subscribe.php
<?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
publish.php
<?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
Client::__construct()
Client::connect()
Client::publish()
Client::subscribe()
Client::unsubscribe()
Client::disconnect()
Client::close()
callback onConnect
callback onMessage
callback onError
callback onClose
Create an instance by $address and $options.
-
$address
can be on the following protocols: 'mqtt', 'mqtts', 'mqtt://test.mosquitto.org:1883'. -
$options
is the client connection options. Defaults:keepalive
:50
seconds, set to0
to disableclient_id
: client id, defaultworkerman-mqtt-client-{$mt_rand}
protocol_name
:'MQTT'
or 'MQIsdp
'protocol_level
:'MQTT'
is4
and 'MQIsdp
' is3
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 flag
resubscribe
: if connection is broken and reconnects, subscribed topics are automatically subscribed again (defaulttrue
)bindto
default '', used to specify the IP address that PHP will use to access the networkssl
defaultfalse
, it can be settrue
orssl context
see http://php.net/manual/en/context.ssl.phpdebug
defaultfalse
, settrue
to show debug info
Connect to broker specified by the given $address and $options in __construct($address, $options)
.
publish(String $topic, String $content, [array $options], [callable $callback], [array $properties])
Publish a message to a topic
$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
, default0
retain
retain flag,Boolean
, defaultfalse
dup
mark as duplicate flag,Boolean
, defaultfalse
$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 properties
Subscribe to a topic or topics
$topic
is aString
topic or anArray
which has as keys the topic name and as value the QoS likearray('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 ofarray('topic' => 'qos', 'topic' => 'qos')
where:topic
is a subscribed to topicqos
is the granted qos level on it
$properties
-array
MQTT5 user properties
Unsubscribe from a topic or topics
$topic
is aString
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 properties
Send DISCONNECT package to broker and close the client.
Close the client without DISCONNECT package.
Emitted on successful connection (CONNACK
package received).
function (topic, message, client, properties) {}
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
Emitted when something wrong for example the client cannot connect broker.
Emitted when connection closed.
MIT