EMP 实现消息发布订阅

版权声明:未经允许不得转载。 https://blog.csdn.net/qq_35958788/article/details/83302813

官网文档

http://emqtt.com/docs/v2/index.html

php 实现消息发布

  • 使用第三方包bluerhinos/phpmqtt
$mqtt = new phpMQTT("localhost", 1883, "clientId");
//Change ClientId to something unique,此处必须唯一,一个客户端对应一个id
if ($mqtt->connect()) {
    for($i = 0; $i < 20; $i++) {
       sleep(1);
// $mqtt->publish('/Worldd','Hello new '.$i.'laravel!',0);
       $mqtt->publish("World","Hello laravel! at ".date("r"),0);
   }
   $mqtt->close();
}

消息订阅

  • php实现
<?php
require dirname(__DIR__) . "/vendor/autoload.php";
use Bluerhinos\phpMQTT;

$server = "localhost";    // change if necessary
$port = 1883;                     // change if necessary
$username = "";                   // set your username
$password = "";                   // set your password
$client_id = "phh-subscriber"; // make sure this is unique for connecting to sever - you could use uniqid()
$micro_time = round(microtime(true) * 1000);
$client_id = $client_id . $micro_time;

$mqtt = new phpMQTT($server, $port, $client_id);

if (!$mqtt->connect(true, NULL, $username, $password)) {
    exit(1);
}

function procmsg($topic, $msg)
{
    echo "Msg Recieved: " . date("r") . "\n";
    echo "Topic: {$topic}\n\n";
    echo "\t$msg\n\n";
}

$topics['World'] = array("qos" => 0, "function" => "procmsg");
$mqtt->subscribe($topics, 0);

while ($mqtt->proc()) {

}

$mqtt->close();
  • js websocket 订阅消息
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>

<script type="text/javascript">
    client = new Paho.MQTT.Client("localhost", Number(8083), "mqttjs_f3244323b7");//建立客户端实例
        client.connect({onSuccess:onConnect});//连接服务器并注册连接成功处理事件
        function onConnect() {
            console.log("onConnected");
            client.subscribe("World");//订阅主题
        }
        client.onConnectionLost = onConnectionLost;//注册连接断开处理事件
        client.onMessageArrived = onMessageArrived;//注册消息接收处理事件
        function onConnectionLost(responseObject) {
            console.log(responseObject)
            if (responseObject.errorCode !== 0) {
                console.log("onConnectionLost:"+responseObject.errorMessage);
                console.log("连接已断开");
             }
        }
        function onMessageArrived(message) {
          console.log("收到消息:"+message.payloadString);
        }
        //发送消息
  //       message = new Paho.MQTT.Message("hello");
        // message.destinationName = "/topic";
        // client.send(message);

</script>

端口监听

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35958788/article/details/83302813