【发布时间】:2021-11-09 22:56:05
【问题描述】:
我尝试在 laravel livewire 中收听广播发出的事件,但没有任何反应;
在我的 bootstrap.js 上我有:
import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'myKey',
wsHost: window.location.hostname,
wsPort: 6001,
disableStat: true,
forceTLS: false,
});
我的活动 laravel
class TaskFinished implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public function __construct()
{
//
}
public function broadcastAs(){
return 'task-finish';
}
public function broadcastOn()
{
return new Channel('TaskTricolor');
}
}
我的听众
class SendTaskNotif
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param TaskFinished $event
* @return void
*/
public function handle(TaskFinished $event)
{
}
}
还有我的 livewire 组件
protected $listeners = ['echo:TaskTricolor,TaskFinished' => 'eventlisten'];
// public function getListeners(){
// return [
// 'echo:TaskTricolor,TaskFinished' => 'eventlisten'
// ];
// }
public function start(){
$this->start = true;
$tricolors = new TricolorController();
$this->tricolor = $tricolors->start();
}
public function stop(){
$this->start = false;
$tricolors = new TricolorController();
$this->tricolor = $tricolors->stop();
}
public function emet(){
event(new TaskFinished());
}
public function eventlisten(){
$vars = "test";
dd($vars);
}
在我的听众上,我输入了dd('test'),当调用 emet 函数时,会显示 dd 值;
因此,当我使用 livewire 侦听器处理程序进行测试时,什么也没有发生,我的 dd 没有出现,也没有错误;
我尝试从刀片控制台记录 Echo 以测试我是否可以处理侦听器,但它显示 Echo 未定义,但是当我在 console.log 窗口中时,我看到 Echo 在里面
不知道能不能解决,我用的是beyondcode/laravel-websockets包作为驱动
【问题讨论】:
标签: laravel broadcast laravel-livewire laravel-echo