Laravel Broadcasting не возвращает результатов

70
20 января 2022, 11:40

Пытаюсь создать real-time уведомления используя Laravel Echo и Pusher, но не получаю никаких результатов. Пользуюсь своим authentication middleware-ом, поэтому изменил файл BroadcastServiceProvider.php файл, передал атрибут, как указан в документации. Ниже мои файлы и код.

FriendRequest Event

<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use App\Users;
use App\Friend_requests;
class FriendRequest implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $user;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($user)
    {
        $this->user = $user;
    }
    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('notification');
    }
}

routes/channels.php

<?php
/*
|--------------------------------------------------------------------------
| Broadcast Channels
|--------------------------------------------------------------------------
|
| Here you may register all of the event broadcasting channels that your
| application supports. The given channel authorization callbacks are
| used to check if an authenticated user can listen to the channel.
|
*/
Broadcast::channel('App.User.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});
Broadcast::channel('notification', function($user){
     return true;
});

app/Providers/BroadcastServiceProvider.php

<?php
namespace App\Providers;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Broadcast::routes(['middleware' => ['authorized']]);
        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: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    encrypted: true,
});
window.Echo.private('notification')
    .listen("FriendRequest", (e)=>{
        console.log(e);
    });
    console.log("Laravel Echo");

web.php

Route::get('/test', "UserController@test");

UserController.php

public function test(){
        broadcast(new FriendRequest("Some text"));
    }

config/broadcasting.php

<?php
return [
    /*
    |--------------------------------------------------------------------------
    | Default Broadcaster
    |--------------------------------------------------------------------------
    |
    | This option controls the default broadcaster that will be used by the
    | framework when an event needs to be broadcast. You may set this to
    | any of the connections defined in the "connections" array below.
    |
    | Supported: "pusher", "redis", "log", "null"
    |
    */
    'default' => env('BROADCAST_DRIVER', 'null'),
    /*
    |--------------------------------------------------------------------------
    | 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' => 'ap2',
                'useTLS' => true,
            ],
        ],
        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],
        'log' => [
            'driver' => 'log',
        ],
        'null' => [
            'driver' => 'null',
        ],
    ],
];
READ ALSO
Не сохраняются сессии в Laravel

Не сохраняются сессии в Laravel

Раньше было все отлично и все работалоВчера заметил, что не показываются ошибки формы

61
SQLITE. Выбор 10 ближайших значений к заданному

SQLITE. Выбор 10 ближайших значений к заданному

В таблице пользователи есть колонка возрастМне нужно получить 10 ближайших значений к этому возрасту (в любом направлении, как старше, так...

84
Проблема при установке MySQL Server 8.0

Проблема при установке MySQL Server 8.0

Кто-нибудь знает в чем может быть дело? При установке MySQL Installer Community на этапе конфигурации просит ввести старый пароль root Current Root PasswordЯ не помню...

155
Экспорт из Excel и импорт в MySql

Экспорт из Excel и импорт в MySql

Есть огромная база в excelЗнаю, что можно тупо сохранить файл в csv и импортировать его в базу данных mysql

257