我正在尝试创建信号数量的实时更新(每当用户单击按钮时,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!