Laravel Echo не слушает только на частном канале - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь слушать на частном канале с помощью Laravel Echo, но он не слушает только на частном канале, публичный канал работает нормально.

Я также использую пакет beyondcode / Laravel-Websockets , и он показывает мне на панели инструментов websockets все выполненные подключения и события. Он показывает все частные соединения, сделанные самим пакетом, мои публичные соединения и все инициированные события (частные и публичные), но не показывает мои личные соединения

Событие, если сработало, и данные сохранены в базе данных, все работает совершенно нормально, за исключением того, что в представлении, я не получаю никаких данных от частного события, вызванного

Я попытался понизить версию Laravel Echo до версии "^ 1.3.2" , когда предопределенным было "^ 1.5.4"

Это мое событие, которое транслируется на частном канале

<?php

namespace App\Events;

use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;

class NuevoGasto implements ShouldBroadcastNow
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $gasto;

    public function __construct($gasto)
    {
        $this->gasto = $gasto;
    }

    public function broadcastOn()
    {
        return new PrivateChannel('nuevo-gasto-channel');
    }
}

Заметьте, я использую ShouldBroadcastNow черта, поэтому мне не нужно использовать очередь

Это мой файл bootstrap.js с моей конфигурацией Laravel Echo

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,
    disableStats: true,
});

Это мой файл routs / channel.php


Broadcast::channel('nuevo-gasto-channel', function ($user) {
    return true;
});

Обратите внимание, я возвращаю истину для демонстрационных целей

Это мой файл просмотра, когда я слушаю событие NuevoGasto на канале nuevo-gasto-channel


Echo.private('nuevo-gasto-channel')
    .listen('NuevoGasto', (e) => {
            console.log(e);
});

И, наконец, это мой контроллер, где я запускаю событие


...

broadcast(new NuevoGasto($gasto))->toOthers();

...

Я не получаю никаких ошибок, просто нет прослушивания на частном канале

...