<?php require __DIR__ . '/../test.inc.php'; use sskaje\mqtt\MQTT; use sskaje\mqtt\Debug; use sskaje\mqtt\MessageHandler; $mqtt = new MQTT($MQTT_SERVER); $context = stream_context_create(); $mqtt->setSocketContext($context); Debug::Enable(); //$mqtt->setAuth('sskaje', '123123'); $mqtt->setKeepalive(3600); $connected = $mqtt->connect(); if (!$connected) { die("Not connected\n"); } $topics['sskaje/#'] = 2; $mqtt->subscribe($topics); #$mqtt->unsubscribe(array_keys($topics)); class MySubscribeCallback extends MessageHandler { public function publish($mqtt, sskaje\mqtt\Message\PUBLISH $publish_object) { printf("[32mI got a message[0m:(msgid=%d, QoS=%d, dup=%d, topic=%s) [32m%s[0m\n", $publish_object->getMsgID(), $publish_object->getQos(), $publish_object->getDup(), $publish_object->getTopic(), $publish_object->getMessage()); } } $callback = new MySubscribeCallback(); $mqtt->setHandler($callback); $mqtt->loop();
<?php require __DIR__ . '/../test.inc.php'; ini_set('error_log', __DIR__ . '/../../logs/examples_publish.log'); use sskaje\mqtt\MQTT; use sskaje\mqtt\Debug; $mqtt = new MQTT($MQTT_SERVER); # Set Socket Context $context = stream_context_create(); $mqtt->setSocketContext($context); # Set Connect Will $mqtt->setWill('sskaje/will', 'Ciao~', 0, 0); Debug::Enable(); Debug::SetLogPriority(Debug::NOTICE); # $mqtt->setKeepalive(30); //$mqtt->setAuth('sskaje', '123123'); $connected = $mqtt->connect(); if (!$connected) { die("Not connected\n"); } $msg = str_repeat('1234567890', 1); # Set Retry Timeout for Publish and its following commands $mqtt->setRetryTimeout(5); Debug::Log(Debug::INFO, "QoS=1"); $c = 1; while (true) { # Special thanks to @LiuYongShuai for this test case. # It is the responsibility of the Client to ensure that the interval between Control Packets # being sent does not exceed the Keep Alive value. In the absence of sending any other Control # Packets, the Client MUST send a PINGREQ Packet [MQTT-3.1.2-23].
public function suback(MQTT $mqtt, \sskaje\mqtt\Message\SUBACK $suback_object) { global $client_id; # sign up $mqtt->publish_async('sskaje/bot/login', $client_id, 1); }
<?php require __DIR__ . '/../test.inc.php'; ini_set('error_log', __DIR__ . '/../../logs/examples_publish.log'); use sskaje\mqtt\MQTT; use sskaje\mqtt\Debug; $mqtt = new MQTT($MQTT_SERVER); # Set Socket Context $context = stream_context_create(); $mqtt->setSocketContext($context); # Set Connect Will $mqtt->setWill('sskaje/will', 'Ciao~', 0, 0); Debug::Enable(); Debug::SetLogPriority(Debug::NOTICE); //$mqtt->setAuth('sskaje', '123123'); $connected = $mqtt->connect(); if (!$connected) { die("Not connected\n"); } $msg = str_repeat('1234567890', 1); Debug::Log(Debug::INFO, "QoS=0"); $c = 0; do { # mosquitto_sub -t 'sskaje/#' -q 1 -h test.mosquitto.org $mqtt->publish_sync('sskaje/test', $msg, 0, 0); echo "======== QoS=0, Count={$c}\n"; #sleep(1); } while (++$c < 100);
<?php require __DIR__ . '/../autoload.example.php'; use sskaje\mqtt\MQTT; use sskaje\mqtt\Debug; $mqtt = new MQTT($MQTT_SERVER); Debug::Enable(); //$mqtt->setAuth('sskaje', '123123'); $mqtt->setKeepalive(3600); $connected = $mqtt->connect(); if (!$connected) { die("Not connected\n"); } $topics['sskaje/test/1'] = 1; $topics['sskaje/broadcast/#'] = 1; $c = 0; do { $msg = $c; # mosquitto_sub -t 'sskaje/#' -q 1 -h test.mosquitto.org $mqtt->publish_sync('sskaje/test/1', $msg, 1, 0); $mqtt->publish_sync('sskaje/broadcast/' . $c, $msg, 1, 0); usleep(500000); } while (++$c < 1000);
<?php date_default_timezone_set('Asia/Shanghai'); require __DIR__ . '/test.inc.php'; use sskaje\mqtt\MQTT; use sskaje\mqtt\Debug; $mqtt = new MQTT($MQTT_SERVER, '123'); $mqtt->setVersion(MQTT::VERSION_3_1_1); #$mqtt->setVersion(MQTT::VERSION_3_1); Debug::Enable(); $mqtt->setKeepalive(60); $connected = $mqtt->connect(); if (!$connected) { die("Not connected\n"); } log_test('publish() QoS 0'); $mqtt->publish('qos/0', 'This is a QoS 0 Message', 0, 0, 0, 0); try { $mqtt->publish('qos/0', 'This is a QoS 0 Message', 0, 0, 0, 1); } catch (Exception $e) { echo 'Exception: ' . $e->getMessage() . "\n"; } log_test('publish() QoS 1'); try { $mqtt->publish('qos/1', 'This is a QoS 1 Message', 0, 1, 0, 0); } catch (Exception $e) { echo 'Exception: ' . $e->getMessage() . "\n"; } try { $mqtt->publish('qos/1', 'This is a QoS 1 Message', 0, 1, 0, 1); } catch (Exception $e) {
<?php require __DIR__ . '/../test.inc.php'; require __DIR__ . '/handler.php'; ini_set('error_log', __DIR__ . '/../../logs/examples_publish.log'); use sskaje\mqtt\MQTT; use sskaje\mqtt\Debug; use sskaje\mqtt\MessageHandler; $mqtt = new MQTT($MQTT_SERVER); # Set Socket Context $context = stream_context_create(); $mqtt->setSocketContext($context); # Set Connect Will $mqtt->setWill('sskaje/will', 'Ciao~', 0, 0); Debug::Enable(); Debug::SetLogPriority(Debug::NOTICE); //$mqtt->setAuth('sskaje', '123123'); $connected = $mqtt->connect(); if (!$connected) { die("Not connected\n"); } $msg = str_repeat('1234567890', 1); # Set Retry Timeout for Publish and its following commands $mqtt->setRetryTimeout(5); Debug::Log(Debug::INFO, "QoS=1"); $myhandler = new \MyPublishHandler(); $c = 0; do { # mosquitto_sub -t 'sskaje/#' -q 1 -h test.mosquitto.org $r = $mqtt->publish_async('sskaje/test', $msg, 1, 0); $myhandler->waitQueue[$r['msgid']] = $r;
<?php require __DIR__ . '/../test.inc.php'; use sskaje\mqtt\MQTT; use sskaje\mqtt\Debug; use sskaje\mqtt\MessageHandler; $mqtt = new MQTT($MQTT_SERVER); $context = stream_context_create(); $mqtt->setSocketContext($context); # Debug::Enable(); $mqtt->setVersion(MQTT::VERSION_3_1_1); # $mqtt->setAuth('sskaje', '123123'); $mqtt->setKeepalive(3600); # Set Connect Will $mqtt->setWill('sskaje/bot/broadcast', "I'll be back", 1, 0); $connected = $mqtt->connect(); if (!$connected) { die("Not connected\n"); } $topics['sskaje/bot/#'] = 2; $mqtt->subscribe($topics); class BotControlCallback extends MessageHandler { protected $online_agents = array(); public function publish($mqtt, \sskaje\mqtt\Message\PUBLISH $publish_object) { $topic = $publish_object->getTopic(); $message = $publish_object->getMessage(); if ($topic === 'sskaje/bot/login') { $this->online_agents[$message] = 1; $mqtt->publish_async('sskaje/bot/' . $message, 'Welcome, ' . $message, 1);