Laravel回声不监听推送事件-Laravel 7

时间:2020-09-19 08:07:46

标签: php laravel-7 laravel-echo pusher-js

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

0 个答案:

没有答案