【类 型】:feat

【主	题】:封装一个 发送mqtt的函数
【描	述】:
	[原因]:顺便测试一下 支付回调信息 (用mqtt发送)
	[过程]:
	[影响]:
【结	束】

# 类型 包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
This commit is contained in:
tk 2024-06-05 20:20:00 +08:00
parent aff3025c7d
commit c40e4729db
3 changed files with 44 additions and 36 deletions

View File

@ -6,7 +6,6 @@ use Yansongda\Pay\Pay;
use PhpMqtt\Client\MqttClient;
use PhpMqtt\Client\Exceptions\MqttClientException;
use PhpMqtt\Client\ConnectionSettings;
use PhpMqtt\Client\Message;
class PayController extends PublicController
{
@ -83,42 +82,14 @@ class PayController extends PublicController
public function notifyCallback()
{
$server = 'www.szdot.top'; // MQTT 代理地址
$port = 1883; // MQTT 代理端口
$clientId = 'php-mqtt-client'; // 客户端 ID
$username = 'admin'; // 用户名(如果需要)
$password = '123456'; // 密码(如果需要)
$pay = Pay::wechat($this->config);
try {
// 创建连接设置对象
$settings = (new ConnectionSettings)->setUsername($username)->setPassword($password);
// 实例化 MQTT 客户端
$mqtt = new MqttClient($server, $port, $clientId);
// 连接到 MQTT 代理
$mqtt->connect($settings);
// 检查是否连接成功
if ($mqtt->isConnected()) {
echo "连接成功";
// 发布消息到指定的主题 ps:主题 信息 qos
$mqtt->publish('demo', 'Hello MQTT', 0);
// 断开连接
$mqtt->disconnect();
echo "断开连接";
} else {
echo "连接失败";
}
} catch (MqttClientException $e) { //连接失败
echo "Could not connect to MQTT broker: " . $e->getMessage();
$data = $pay->callback(); // 是的,验签就这么简单!
} catch (\Exception $e) {
// $e->getMessage();
}
// $pay = Pay::wechat($this->config);
// try {
// $data = $pay->callback(); // 是的,验签就这么简单!
// } catch (\Exception $e) {
// // $e->getMessage();
// }
// return $pay->success();
$this->publish('demo', $data);
}
}

View File

@ -7,6 +7,10 @@ use Think\Controller;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use PhpMqtt\Client\MqttClient;
use PhpMqtt\Client\Exceptions\MqttClientException;
use PhpMqtt\Client\ConnectionSettings;
class PublicController extends Controller
{
protected $openid; // 用户openid
@ -103,4 +107,37 @@ class PublicController extends Controller
return $phoneNumber;
}
}
/**
* @description: 连接mqtt服务器 并向指定主题发布信息
* @param string $topic mqtt主题
* @param string $msg 要发布的主题
*/
protected function publish($topic, $msg)
{
$server = C('mqtt')['server']; // MQTT 代理地址
$port = C('mqtt')['port']; // MQTT 代理端口
$clientId = C('mqtt')['client_id']; // 客户端 ID
$username = C('mqtt')['username']; // 用户名(如果需要)
$password = C('mqtt')['password']; // 密码(如果需要)
try {
// 创建连接设置对象
$settings = (new ConnectionSettings)->setUsername($username)->setPassword($password);
// 实例化 MQTT 客户端
$mqtt = new MqttClient($server, $port, $clientId);
// 连接到 MQTT 代理
$mqtt->connect($settings);
// 检查是否连接成功
if ($mqtt->isConnected()) {
// 发布消息到指定的主题 ps:主题 信息 qos
$mqtt->publish($topic, $msg, 0);
// 断开连接
$mqtt->disconnect();
} else {
echo "连接失败";
}
} catch (MqttClientException $e) { //连接失败
echo "Could not connect to MQTT broker: " . $e->getMessage();
}
}
}

View File

@ -2,7 +2,7 @@
/*
* @Author: 田老师 4021673@qq.com
* @Date: 2022-05-16 17:57:44
* @LastEditTime: 2024-06-04 20:39:52
* @LastEditTime: 2024-06-05 20:15:27
* @Description: Do not edit
*/
return array(
@ -29,7 +29,7 @@ return array(
'jwtKey' => 'T!o@k_en', //签发 解析token的key
//mqtt
'mqtt' => array(
'server' => 'szdot.top', // mqtt服务器
'server' => 'www.szdot.top', // mqtt服务器
'port' => 1883, // mqtt端口
'username' => 'admin', // mqtt用户名
'password' => '123456', // mqtt密码