Laravel Эхо не получает события от толкателя - PullRequest
0 голосов
/ 03 августа 2020

Мне нужно реализовать 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

Любая помощь приветствуется, так как я работаю над этим для последние четыре дня безуспешно.

...