@grigorie1990

Как увидеть сообщение о событии в канале сокета Pusher (Laravel Websockets)?

У меня есть событие которое должно вещать в канал, но при его вызове в канале не видно сообщения. Использую Laravel Websockets. На сервере порт открыл и получаю объект канала на клиенте
import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    wsHost: window.location.hostname,
    wsPort: 6001,
});
let channel = window.Echo.channel('room1');
console.log(channel);
channel
    .listen('TestEvent', () => {
        console.log('1');
    });

класс события
class TestEvent
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $data;
    public function __construct()
    {
        $this->data = json_encode(['a' => 1, 'b' => 2]);
    }

    public function broadcastOn()
    {
        return new Channel('room1');
    }
}

console.log(channel); - срабатывает
console.log(1) после вызова роута
Route::get('test', function() {
    App\Events\TestEvent::dispatch();
});

не срабатывает
Есть ли у вас мысли?)
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 1
@NoBody1
Event должен использовать ShouldBroadcast, если используются WebSockets. Поподробней написано в доках ларавел. Но если коротко, то нужно что-то такое :
Class TestEvent implements ShouldBroadcast {
...
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы