laravel - Laravel Mqtt 的订阅没有结束
问题描述
我从 Laravel 收到一条 Mqtt 消息并尝试执行一些操作,但是如果您订阅,您只会收到一条消息,并且延迟大约需要一分钟。
我在https://github.com/salmanzafar949/MQTT-Laravel提到了这一点。
通过创建一个单独的控制器来实现 Mqtttt 运动。
我的代码是
<?php
namespace App\Http\Controllers;
use Salman\Mqtt\MqttClass\Mqtt;
use Illuminate\Http\Request;
class MqttController extends Controller{
public $token = "";
public function SendMsgViaMqtt(Request $request)
{
$mqtt = new Mqtt();
//$client_id = Auth::user()->id;/
$topic = $request->topic;
$token = $request->token;
$message = $request->message;
$output = $mqtt->ConnectAndPublish("test", $message, "");
if ($output === true)
{
if($token == "none" || !$token){
return "End";
}else{
$this->SubscribetoTopic($token);
}
}else{
return "Failed";
}
}
public function SubscribetoTopic($token)
{
$topic = 'test';
$this->token = $token;
$message = [];
$mqtt = new Mqtt();
$client_id = "";
$mqtt->ConnectAndSubscribe($topic, function($topic, $msg){
if($msg == "end"){
$message = [
'title' => '魚が釣れました',
'body' => '釣竿を確認してください',
'click_action' => 'Url'
];
}else if($msg == "no"){
$message = [
'title' => '測定できません',
'body' => '波が強すぎると測れません',
'click_action' => 'Url'
];
}else{
return "end";
}
return $this->sendCrul($this->token, $message);
}, "");
}
public function sendCrul($token, $message){
define('SERVER_API_KEY', 'APIKEY');
$tokens = $token;
$header = [
'Authorization: Key=' . SERVER_API_KEY,
'Content-Type: Application/json'
];
$payload = [
'to' => $tokens,
'notification' => $message
];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://fcm.googleapis.com/fcm/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode( $payload ),
CURLOPT_HTTPHEADER => $header
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if($err){
echo "cURL Error #:". $err;
}else{
return $response;
}
// return "ok";
}
}
如果你像我一样遇到麻烦,请告诉我怎么做。
解决方案
推荐阅读
- python - 如何将相同的值添加到字典中的不同键?
- java - 运行服务“Google Play 服务”使用大量 RAM
- r - 获取对 R 中的特定列具有相同值的所有行名
- java - 有没有办法在Java(类似LINQ)中创建另一个对象的集合?
- r - 如何使用 R 中的 ets() 或 holt() 函数复制 Excel 2016 forecast.ets 的结果?
- python - 有没有办法为本地文件生成 URL?
- css - 如何避免 BEM 中相同类名的冲突?
- sql - Web 服务帐户的权限
- pandas - 我有一个 2 列的 DF。我想对其进行布尔检查
- r - R. 将具有连续值的列拆分为具有连续开始和结束位置的 2 列