使用 laravel echo 仅订阅我的订单的频道

Subscribe on a channel only for my orders using laravel echo

最近我开始使用Laravel Echo,现在我有一个疑问。假设我正在开发一个网上商店。作为我的网上商店的用户,我有一个不同状态(待定、已批准、失败、发货等)的订单列表。我想使用 Laravel Echo.

实时更新状态

我如何才能只订阅我订单上的事件而不订阅网上商店的所有订单?

Echo.channel('orders') //only my orders
.listen('OrderStatus', (e) => {
    console.log(e.order.status);
});

感谢您的帮助。

谢谢

您可以在私人频道收听。

Echo.private('orders.' + user.id) //only your orders
.listen('OrderStatus', (e) => {
    console.log(e.order.status);
});

假设您的 javascript 中有一些用户。

现在您需要在 routes/channels 中设置频道路由。php

Broadcast::channel('orders.{userId}', function ($user, $userId) {
    return $user->id === $userId;
});

现在一个用户只能收听自己的订单频道。 Laravel Echo 的一个很好的参考是 official documentation.