Laravel 拉维尔Mqtt';s订阅不';t端

Laravel 拉维尔Mqtt';s订阅不';t端,laravel,mqtt,Laravel,Mqtt,我从Laravel收到一条Mqtt消息,并尝试执行一些操作,但如果您订阅,则只会收到一条消息,延迟大约需要一分钟 我在会议上提到了这一点 通过创建单独的控制器实现Mqtttt运动 我的代码是 <?php namespace App\Http\Controllers; use Salman\Mqtt\MqttClass\Mqtt; use Illuminate\Http\Request; class MqttController extends Controller{ public $

我从Laravel收到一条Mqtt消息,并尝试执行一些操作,但如果您订阅,则只会收到一条消息,延迟大约需要一分钟

我在会议上提到了这一点

通过创建单独的控制器实现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";
}
}