Триггер Pusher Eloquent Event возвращает ложный HTTP API Req Laravel 5.7 - PullRequest
1 голос
/ 24 апреля 2019

У меня есть два красноречивых события модели, выполненных API (вставка и обновление).Я проверил их с Почтальоном, и они работают. Я получаю журналы выполненных операций.Я удалил журналы, так как моя цель - запускать события-толкатели, когда срабатывает одно из этих событий.Я установил толкатель, устанавливающий это от композитора.Я обновил файлы конфигурации и env, которые я покажу ниже, и я сделал несколько триггеров на канал с панели мониторинга толкателя.

Я использую Ubuntu 18.04 с apache, laravel 5.7 и при попытке HTTPзапрос Я заметил, что $ re = $ pusher-> trigger ('api-channel', 'model.insert', array ('message' => 'hello'));возвращает ложьЯ пробовал как комментировать строку шифрования в конфиге, так и установить ее в false, обновляя время через ntp, как предлагалось в других сообщениях, но это не решает мою проблему.Я пытался вызвать событие как из контроллера, так и из загрузочной функции eventserviceprovider, но результат всегда одинаков.

Это мой js

//event listener for document repo api
// Enable pusher logging - don't include this in production
Pusher.logToConsole = true;

var pusher = new Pusher('*****', {
   cluster: 'eu',
   forceTLS: true
});

var channel = pusher.subscribe('api-channel');



channel.bind('model.insert', function(document) {
   alert(JSON.stringify(document.message));
   console.log(document);

});

Я проверил, если конфигурацияправильно настроить, добавив эти строки кода в BroadCastManager.php

var_dump($config['key']);
var_dump($config['secret']);
var_dump( $config['app_id']);
var_dump($config['options']);
exit;

И по выводу я могу сказать, что они правильные.Это мой код при попытке запуска от контроллера

namespace App\Http\Controllers;

.
.
.
use Illuminate\Http\Request;
use Pusher\Pusher as Pusher;

.
.
.
            if ($model->save()) {


                $options = array(
                    'cluster' => 'eu',
                    'encrypted' => false
//                'host' => '127.0.0.1',
//                'port' => 6001,
//                'scheme' => 'http'
                );
                $pusher = new Pusher(
                    'key',
                    'secret',
                    'app-id',
                    $options
                );

//                dd($pusher->get_channels());




                $re = $pusher->trigger('api-channel', 'model.insert', array('message' => 'hello'));

                dd($re);

                return new ModelResource($model);
            }

Я также пытался создать событие laravel и прослушиватель и вызвать это событие в контроллере после того, как было выполнено изменение модели.В этом случае я получаю эту ошибку:

    "message": "",
    "exception": "Illuminate\\Broadcasting\\BroadcastException",
    "file": "/home/usr/projects/tdv/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php",
    "line": 117,
    "trace": [
        {
            "file": "/home/usr/projects/tdv/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastEvent.php",
            "line": 48,
            "function": "broadcast",
            "class": "Illuminate\\Broadcasting\\Broadcasters\\PusherBroadcaster",
            "type": "->"

Это мой класс событий.Он зарегистрирован у поставщика услуг обработки событий.


namespace App\Events;

use App\ModelRepository;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Log;

class ModelEvent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;


    public $modelRepository;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(ModelRepository $modelRepository)
    {
        //
        $this->$modelRepository = $modelRepository;
        $this->broadcast();
    }



    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('api-channel');
    }

    public function broadcast()
    {
        $options = array(
            'cluster' => 'eu',
            'host' => '127.0.0.1',
            'port' => 6001,
            'scheme' => 'http',
            'useTLS' => true
        );
        $pusher = new Pusher(
            '***',
            '***',
            '***',
            $options
        );

        return $pusher->trigger('api-channel', 'model.insert', array('data' => $this->modelRepository));

    }
}

, и в этом случае именно так я запускаю событие в контроллере

event(new ModelEvent(new ModelRepository()));

Заранее спасибо!:)

...