Мне нужно реализовать Laravel Echo в моем проекте для трансляции, и я точно следил за документацией, но Echo, похоже, не работает, так как события приходят на консоль отладки pusher, но я не могу увидеть их в браузере. ниже приведены наиболее важные фрагменты кода:
.env:
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=0000000000000
PUSHER_APP_KEY=-----------------------------
PUSHER_APP_SECRET=-----------------------
PUSHER_APP_CLUSTER=ap2
трансляция:
'default' => env('BROADCAST_DRIVER', 'pusher'),
/*
|--------------------------------------------------------------------------
| Broadcast Connections
|--------------------------------------------------------------------------
|
| Here you may define all of the broadcast connections that will be used
| to broadcast events to other systems or over websockets. Samples of
| each available type of connection are provided inside this array.
|
*/
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
],
каналов. php (Примечание PS: всегда возвращается true в журналах):
Broadcast::channel('App.User.{id}', function ($user, $id) {
\Illuminate\Support\Facades\Log::info("Load from channel");
\Illuminate\Support\Facades\Log::info((int) $user->id === (int) $id);
return (int) $user->id === (int) $id;
});
FavoriteCreate. php:
FavoriteCreated implements ShouldBroadcast
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('App.User.' . $this->favorite->favorable->id);
}
public function broadcastAs()
{
return 'favorite.created';
}
app.blade. php: (Я подозреваю, что defer
может иметь какое-то отношение к it):
<main class="py-4">
@yield('content')
</main>
</div>
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}"></script>
@yield('js')
BroadcastingServiceProvider. php:
public function boot()
{
//I have also tested it with ['middleware' => "auth"]
Broadcast::routes();
require base_path('routes/channels.php');
}
bootstrap. js
import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: '00000000000000',
cluster: 'ap2',
forceTLS: true
});
webpack.mix. js :
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.sourceMaps();
NotificationsComponent. vue:
created() {
Echo.private('App.User.'+this.user)
.listen('favorite.created', (e) => {
console.log(e);
})
}
Pusher DebugConsole:
API MESSAGE
Channel: private-App.User.3, Event: Illuminate\Notifications\Events\BroadcastNotificationCreated
06:00:45
API MESSAGE
Channel: private-App.User.3, Event: favorite.created
Любая помощь приветствуется, так как я работаю над этим для последние четыре дня безуспешно.