Я следую Документации Laravel , чтобы настроить вещание с использованием Pusher, и это выглядит довольно просто, но я еще не получил его работу, поэтому я, должно быть, где-то ошибсяпуть.
Вот что я сделал:
Сторона сервера
Я создал Event
, который реализует ShouldBroadcastNow
интерфейс и определил метод broadcastsOn()
.
class ThreadMessageCreated implements ShouldBroadcastNow {
use Dispatchable, InteractsWithSockets, SerializesModels;
public function broadcastOn() {
return new Channel('bobtest');
}
Я поднимаю Событие с одного из моих контроллеров API:
public function createMessage(Thread $thread, Request $request) {
...
event(new ThreadMessageCreated($message, $thread));
return $message;
}
Я настроил свои учетные данные в моем *Файл 1020 *.
на стороне клиента
Я настроил эхо Laravel на стороне клиента (с помощью пакета angular-laravel-echo )и подписал моего клиента на канал.
ngOnInit() {
this.echo
.join('bobtest', 'public')
.listen('bobtest', 'ThreadMessageCreated')
.subscribe(()=>alert('message received'));
console.log(this.echo);
}
Однако, когда моя конечная точка API ударила, событие запускается, но я ничего не вижу на стороне клиента.
ТакЯ добавил логирование в методе broadcastOn (), чтобы убедиться, что он вызывается.Затем я изменил драйвер с pusher
на log
и вижу, что информация о трансляции записывается в файл laravel.log
.
Итак, я предполагаю , что трансляциятакже происходит при использовании драйвера Pusher, и либо не отправляется из Laravel, либо не принимается клиентом.
Я новичок в сокетах, pusher и Laravel Echo, поэтомуЯ не уверен, где искать дополнительную информацию, чтобы отследить это.
- Я не вижу никаких ошибок в файле
laravel.log
. - Я не вижувсе ошибки в Chrome Dev Tools на стороне клиента.
- Я вошел в систему pusher, и на вкладке «Журналы ошибок» нет ошибок
Что можно сделать дляполучить более подробную информацию, чтобы выяснить, где происходит проблема?
Спасибо!: -)
[ОБНОВЛЕНИЕ] Я вижу, что трансляции появляются в моей учетной записи-отправителе, поэтому проблема, похоже, на стороне клиента.Возможно я не правильно подписываюсь на нужный канал?
Кроме того, я использую Laravel только в качестве серверной части, используя аутентификацию JWT.В настоящее время я не использую токен laravel csrf, не уверен, что это может иметь отношение к делу.