Я пытаюсь слушать на частном канале с помощью 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();
...
Я не получаю никаких ошибок, просто нет прослушивания на частном канале