Pusher с vue и Laravel работает только создателем событий на приборной панели - PullRequest
1 голос
/ 08 июля 2019

Я интегрирую провайдера Pusher для трансляции данных в моем SPA (vue / laravel).

Интерфейс (Vue) работает хорошо, если я тестирую его, отправляя событие из создателя событий панели инструментов Pusher; все мои браузеры получили событие. Хорошо!

Но ... если я отправлю событие своим бэкэндом, событие не произойдет.

Вот мои коды:

внешний интерфейс (vue)

        ...

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

        channel.bind('hello', function (data) {
            console.log("I got...");
            console.log(data);
           // alert(JSON.stringify(data));
        });

Контроллер (бэкэнд)

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Events\hello;

class HelloController extends Controller{
  //
   public function hello(REQUEST $request){
   event(new hello('hello world'));
  }
}

Событие : (при поддержке)

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

use Illuminate\Foundation\Events\Dispatchable;

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

   public $message;

   public function __construct($message){
      $this->message = $message;
   }

   public function broadcastOn()    {
    return ['my-channel'];
}

   public function broadcastAs(){
      return 'hello';
   }
 }

[EDIT]

Отчет консоли браузера о загрузке страницы:

Pusher : State changed : connecting -> connected with new socket ID 12 1.33
 app.js:1 Pusher : Event sent : {"event":"pusher:subscribe","data":    {"channel":"my-channel"}}
 app.js:1 Pusher : Event recd : {"event":"pusher_internal:subscription_succeeded","channel":"my-channel","data":{}}
 app.js:1 Pusher : No callbacks on my-channel for pusher:subscription_succeeded

[РЕДАКТИРОВАТЬ 2] Я понял, что не могу запустить очередь на своем общем сервере, поэтому я расширил интерфейс с ShouldBroadcast до ShouldBroadcastNow интерфейс:

 use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;

 class hello implements ShouldBroadcastNow{...

[ПРАВИТЬ 3]

Я заметил, что у моего .ENV <-------------- "неправильный" BROADCAST_DRIVER </p>

BROADCAST_DRIVER = журнал

Итак, я переключаюсь на

BROADCAST_DRIVER = толкатель

Но ... больше ничего не работает:

Класс 'Pusher \ Pusher' не найден

Я сделал:

  • Pusher установлен композитором (требуется и установлен)
  • Псевдонимы config / app обновлены с помощью 'Pusher' => Pusher \ Pusher :: class
  • удален кеш laravel

Но это не исправлено ... пока.

Можете ли вы помочь мне отладить его? Спасибо

...