{"id":16925346,"url":"https://github.com/binsoul/net-mqtt-client-react","last_synced_at":"2025-04-10T03:55:35.627Z","repository":{"id":46710153,"uuid":"46673332","full_name":"binsoul/net-mqtt-client-react","owner":"binsoul","description":"Asynchronous MQTT client built on React ","archived":false,"fork":false,"pushed_at":"2021-09-29T07:01:18.000Z","size":57,"stargazers_count":48,"open_issues_count":5,"forks_count":24,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-10T03:55:31.495Z","etag":null,"topics":["mqtt","mqtt-client","reactphp"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/binsoul.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-11-22T18:18:59.000Z","updated_at":"2025-02-02T21:23:02.000Z","dependencies_parsed_at":"2022-07-19T18:03:35.137Z","dependency_job_id":null,"html_url":"https://github.com/binsoul/net-mqtt-client-react","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binsoul%2Fnet-mqtt-client-react","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binsoul%2Fnet-mqtt-client-react/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binsoul%2Fnet-mqtt-client-react/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binsoul%2Fnet-mqtt-client-react/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/binsoul","download_url":"https://codeload.github.com/binsoul/net-mqtt-client-react/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248155002,"owners_count":21056542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mqtt","mqtt-client","reactphp"],"created_at":"2024-10-13T20:10:23.719Z","updated_at":"2025-04-10T03:55:35.607Z","avatar_url":"https://github.com/binsoul.png","language":"PHP","readme":"# net-mqtt-client-react\n\n[![Latest Version on Packagist][ico-version]][link-packagist]\n[![Software License][ico-license]](LICENSE.md)\n[![Total Downloads][ico-downloads]][link-downloads]\n[![Build Status](https://travis-ci.org/binsoul/net-mqtt-client-react.svg?branch=master)](https://travis-ci.org/binsoul/net-mqtt-client-react)\n\nThis package provides an asynchronous MQTT client built on the [React socket](https://github.com/reactphp/socket) library. All client methods return a promise which is fulfilled if the operation succeeded or rejected if the operation failed. Incoming messages of subscribed topics are delivered via the \"message\" event.\n\n## Install\n\nVia composer:\n\n``` bash\n$ composer require binsoul/net-mqtt-client-react\n```\n\n## Example\n\nConnect to a public broker and run forever.\n\n``` php\n\u003c?php\n\nuse BinSoul\\Net\\Mqtt\\Client\\React\\ReactMqttClient;\nuse BinSoul\\Net\\Mqtt\\Connection;\nuse BinSoul\\Net\\Mqtt\\DefaultMessage;\nuse BinSoul\\Net\\Mqtt\\DefaultSubscription;\nuse BinSoul\\Net\\Mqtt\\Message;\nuse BinSoul\\Net\\Mqtt\\Subscription;\nuse React\\Socket\\DnsConnector;\nuse React\\Socket\\TcpConnector;\n\ninclude 'vendor/autoload.php';\n\n// Setup client\n$loop = \\React\\EventLoop\\Factory::create();\n$dnsResolverFactory = new \\React\\Dns\\Resolver\\Factory();\n$connector = new DnsConnector(new TcpConnector($loop), $dnsResolverFactory-\u003ecreateCached('8.8.8.8', $loop));\n$client = new ReactMqttClient($connector, $loop);\n\n// Bind to events\n$client-\u003eon('open', function () use ($client) {\n    // Network connection established\n    echo sprintf(\"Open: %s:%d\\n\", $client-\u003egetHost(), $client-\u003egetPort());\n});\n\n$client-\u003eon('close', function () use ($client, $loop) {\n    // Network connection closed\n    echo sprintf(\"Close: %s:%d\\n\", $client-\u003egetHost(), $client-\u003egetPort());\n\n    $loop-\u003estop();\n});\n\n$client-\u003eon('connect', function (Connection $connection) {\n    // Broker connected\n    echo sprintf(\"Connect: client=%s\\n\", $connection-\u003egetClientID());\n});\n\n$client-\u003eon('disconnect', function (Connection $connection) {\n    // Broker disconnected\n    echo sprintf(\"Disconnect: client=%s\\n\", $connection-\u003egetClientID());\n});\n\n$client-\u003eon('message', function (Message $message) {\n    // Incoming message\n    echo 'Message';\n\n    if ($message-\u003eisDuplicate()) {\n        echo ' (duplicate)';\n    }\n\n    if ($message-\u003eisRetained()) {\n        echo ' (retained)';\n    }\n\n    echo ': '.$message-\u003egetTopic().' =\u003e '.mb_strimwidth($message-\u003egetPayload(), 0, 50, '...');\n    echo \"\\n\";\n});\n\n$client-\u003eon('warning', function (\\Exception $e) {\n    echo sprintf(\"Warning: %s\\n\", $e-\u003egetMessage());\n});\n\n$client-\u003eon('error', function (\\Exception $e) use ($loop) {\n    echo sprintf(\"Error: %s\\n\", $e-\u003egetMessage());\n\n    $loop-\u003estop();\n});\n\n// Connect to broker\n$client-\u003econnect('test.mosquitto.org')-\u003ethen(\n    function () use ($client) {\n        // Subscribe to all topics\n        $client-\u003esubscribe(new DefaultSubscription('#'))\n            -\u003ethen(function (Subscription $subscription) {\n                echo sprintf(\"Subscribe: %s\\n\", $subscription-\u003egetFilter());\n            })\n            -\u003eotherwise(function (\\Exception $e) {\n                echo sprintf(\"Error: %s\\n\", $e-\u003egetMessage());\n            });\n\n        // Publish humidity once\n        $client-\u003epublish(new DefaultMessage('sensors/humidity', '55%'))\n            -\u003ethen(function (Message $message) {\n                echo sprintf(\"Publish: %s =\u003e %s\\n\", $message-\u003egetTopic(), $message-\u003egetPayload());\n            })\n            -\u003eotherwise(function (\\Exception $e) {\n                echo sprintf(\"Error: %s\\n\", $e-\u003egetMessage());\n            });\n\n        // Publish a random temperature every 10 seconds\n        $generator = function () {\n            return mt_rand(-20, 30);\n        };\n\n        $client-\u003epublishPeriodically(10, new DefaultMessage('sensors/temperature'), $generator)\n            -\u003eprogress(function (Message $message) {\n                echo sprintf(\"Publish: %s =\u003e %s\\n\", $message-\u003egetTopic(), $message-\u003egetPayload());\n            })\n            -\u003eotherwise(function (\\Exception $e) {\n                echo sprintf(\"Error: %s\\n\", $e-\u003egetMessage());\n            });\n    }\n);\n\n$loop-\u003erun();\n```\n\n## Testing\n\n``` bash\n$ composer test\n```\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n[ico-version]: https://img.shields.io/packagist/v/binsoul/net-mqtt-client-react.svg?style=flat-square\n[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square\n[ico-downloads]: https://img.shields.io/packagist/dt/binsoul/net-mqtt-client-react.svg?style=flat-square\n\n[link-packagist]: https://packagist.org/packages/binsoul/net-mqtt-client-react\n[link-downloads]: https://packagist.org/packages/binsoul/net-mqtt-client-react\n[link-author]: https://github.com/binsoul\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinsoul%2Fnet-mqtt-client-react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbinsoul%2Fnet-mqtt-client-react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinsoul%2Fnet-mqtt-client-react/lists"}