如何解决Laravel回声不监听推送事件-Laravel 7
我正在尝试创建信号数量的实时更新(每当用户单击按钮时,signals变量就会增加)。
为此,我创建了一个事件SignalAvailability:
class SignalAvailability implements ShouldbroadcastNow
{
use dispatchable,InteractsWithSockets,SerializesModels;
public $id;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(String $id)
{
$this->id = $id;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\broadcasting\Channel|array
*/
public function broadcastOn()
{
return new Channel('signal-availability.1');
}
public function broadcastAs()
{
return 'AvailabilitySignaled';
}
public function broadcastWith() {
return [
'id' => $this->id
];
}
此事件在PHP控制器内触发:
public function attachUsers($orderId) {
$user = auth()->user();
$user->orders()->attach($orderId);
event(new SignalAvailability($orderId));
return response()->json($user->orders()->get());
}
这就是我定义信号变量的方式:
data: {
order: {!! $order->toJson() !!},user: {!! Auth::check() ? Auth::user()->toJson() : null !!},providers: {!! $order->users()->get() !!},signals: {!! count($order->users()->get()) !!},signal: true
}
这就是我尝试在刀片中监听事件的代码:
listen: function() {
console.log('Listen executed');
Echo.channel('signal-availability.1')
.listen('AvailabilitySignaled',(id) => {
this.signals += 1;
});
}
一旦单击一个按钮,就会执行监听功能,以确保它正在监听频道中广播的事件。
但是我没有得到任何结果,甚至在我的浏览器控制台中也没有任何错误。 在pusher调试控制台中,我可以看到与频道订阅有关的websocket连接事件。 而且,我的.env文件中的pusher部分已使用正确的凭据正确设置,并已在broADCAST_DRIVER中的pusher进行了正确设置,在我的bootstrap.js文件中,我未注释Laravel回声代码,并已填充pusher的凭据。 有什么问题的主意吗? 谢谢您在advancne!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。