oliverlorenz/php-mqtt-client

a mqtt client library for php

0.5 2018-11-07 16:43 UTC

This package is not auto-updated.

Last update: 2024-05-06 05:11:36 UTC


README

phpMqttClient is an MQTT client library for PHP. Its based on the reactPHP socket-client and added the MQTT protocol specific functions. I hope its a better starting point that the existing PHP MQTT libraries.

Build Status Code Climate Test Coverage

Goal

Goal of this project is easy to use MQTT client for PHP in a modern architecture without using any php modules. Currently, only protocol version 4 (mqtt 3.1.1) is implemented.

Example publish

$config = require 'config.php';

$connector = ClientFactory::createClient(new Version4());

$p = $connector->create($config['server'], $config['port'], $config['options']);
$p->then(function(Stream $stream) use ($connector) {
    return $connector->publish($stream, 'a/b', 'example message');
});
$connector->getLoop()->run();

Example subscribe

$config = require 'config.php';

$connector = ClientFactory::createClient(new Version4());

$p = $connector->create($config['server'], $config['port'], $config['options']);
$p->then(function(\React\Stream\Stream $stream) use ($connector) {
    $stream->on(Publish::EVENT, function(Publish $message) {
        print_r($message);
    });
    
    $connector->subscribe($stream, 'a/b', 0);
    $connector->subscribe($stream, 'a/c', 0);
});

$connector->getLoop()->run();

Notice - (May 12th, 2015)

This is library is not stable currently. Its an early state, but I am working on it. I will add more features if I need them. If you need features: please give feedback or contribute to get this library running.

Currently works:

  • connect (clean session, no other connect flags)
  • disconnect
  • publish
  • subscribe

Run tests

./vendor/bin/phpunit -c ./tests/phpunit.xml ./tests

Troubleshooting

Why does the connect to localhost:1883 not work?

The answer is simple: In the example is the DNS 8.8.8.8 configured. Your local server is not visible for them, so you can't connect.