Я интегрирую провайдера 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
Но это не исправлено ... пока.
Можете ли вы помочь мне отладить его? Спасибо