一、EMQ X安装
EMQ X R3.0 消息服务器默认占用的 TCP 端口包括:
1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8080 HTTP API 端口
18083 EMQ X管理控制台端口
Shell 脚本一键安装 (Linux)
curl https://repos.emqx.io/install_emqx.sh | sudo bash
后台启动 EMQ X
emqx start
控制台 URL: http://{{host}}:18083/
,默认登录用户名: admin
, 密码: public
二、laravel集成
.env
配置:
MQTT_HOST={{IP地址}}
MQTT_PORT=1883
MQTT_ADMIN=publisher
MQTT_PASSWORD={{密码}}
安装phpmqtt
composer require bluerhinos/phpmqtt
新建一个config: mqtt.config
<?php
return [
'server' => env('MQTT_HOST'),
'port' => env('MQTT_PORT', '1883'),
'username' => env('MQTT_ADMIN', 'publisher'),
'password' => env('MQTT_PASSWORD', ''),
];
新建一个service:MqttService
<?php
namespace App\Services;
use Bluerhinos\phpMQTT;
use Illuminate\Support\Facades\Log;
class MqttService
{
protected $connect;
public function __construct()
{
$client_id = uniqid('mqtt_');
$config = config('mqtt');
$this->mqtt = new phpMQTT($config['server'], $config['port'], $client_id);
$this->mqtt->connect(true, NULL, $config['username'], $config['password']);
}
/**
* 发布
* @param $topic
* @param $message
* @param int $quality
*/
public function publish($topic, $message, $quality = 1)
{
$this->mqtt->publish($topic, $message, $quality, $quality > 0 ? true : false);
}
/**
* 关闭
*/
public function close()
{
$this->mqtt->close();
}
}
新建一个controller:TestController.php
<?php
namespace App\Http\Controllers;
use App\Services\MqttService;
use Illuminate\Http\Request;
class TestController extends Controller
{
public function index()
{
$service = new MqttService();
$service->publish('teaching-research/6/wps', json_encode(['code' => 200]));
}
}
三、客户端调试
下载一个客户端调试工具MqttClient
提取码:0g4s
配置client
点击保存 然后连接
订阅主题为刚才controller中主题
测试成功!
参考:
laravel集成MQTT
EMQX