oliverlorenz / php-mqtt-client
a mqtt client library for php
Installs: 1 406
Dependents: 2
Suggesters: 0
Security: 0
Stars: 37
Watchers: 9
Forks: 17
Open Issues: 8
Requires
- react/socket: ^1.1
Requires (Dev)
- phpunit/phpunit: ^5.0.0
This package is not auto-updated.
Last update: 2025-03-10 08:46:59 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.
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.
- Protocol specifications: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/csprd02/mqtt-v3.1.1-csprd02.html
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.