Я пытаюсь прослушивать частный канал с помощью Laravel Echo, но он не прослушивает только частный канал, общедоступный канал работает нормально.
Я также использую пакет yondcode / Laravel-Websockets, и он показывает мне на панели инструментов веб-сокетов все подключения и сделанные события. Он показывает все частные подключения, сделанные самим пакетом, мои общедоступные подключения и все инициированные события (частные и общедоступные), но не показывает мне мои частные подключения.
Если событие запущено, и данные сохраняются в базе данных, все работает полностью нормально, за исключением того, что в представлении я не получаю никаких данных из запущенного частного события.
Я попытался понизить свою версию Laravel Echo до версии "^ 1.3.2", когда предопределено было "^ 1.5.4"
Это мое мероприятие laravel, которое транслируется на частном канале
<?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,
});
Это мой файл routes / channels.php
Broadcast::channel('nuevo-gasto-channel', function ($user) {
return true;
});
Обратите внимание, я возвращаю true для демонстрационных целей
Это мой файл просмотра, когда я слушаю событие NuevoGasto на nuevo-gasto-channel.
Echo.private('nuevo-gasto-channel')
.listen('NuevoGasto', (e) => {
console.log(e);
});
И, наконец, это мой контроллер, в котором я вызываю событие
...
broadcast(new NuevoGasto($gasto))->toOthers();
...
Я не получаю ошибок, просто не слушаю приватный канал