Laravel веб-розетка для периодической трансляции - PullRequest
0 голосов
/ 27 марта 2020

Я хотел бы знать, есть ли другой подходящий способ достижения ниже в Laravel ~ 7.

Цель: Обновлять количество быстро продаваемых продуктов каждую минуту на веб-интерфейсе ( клиент) в режиме реального времени.

Метод: Используйте планировщик для получения количества продукта из базы данных и используйте веб-сокет для его трансляции каждую минуту.

Вопрос : Есть ли другой лучший способ добиться этого?

Трансляция событий (бэкэнд)

// app/Events/ProductQuantity.php

class ProductQuantity implements ShouldBroadcast
{
    public $product;

    public function __construct(Product $product)
    {
        $this->product = $product;
    }

    public function broadcastWith()
    {
        return ['quantity' => $this->product->quantity];
    }

    public function broadcastOn()
    {
        return new Channel('store');
    }

}

StoreFrontend (клиент)

<script>
    Echo.channel('store')
    .listen('ProductQuantity', (e) => {
        console.log(e.quantity);
    })
</script>

1 Ответ

1 голос
/ 27 марта 2020

Возможно ...

В настоящее время звучит так, будто вы фактически «опрашиваете» свою базу данных на предмет количества товара, а затем отправляете это на ваш веб-интерфейс с помощью веб-сокетов. Это ничем не отличается от использования традиционных методов опроса для достижения конечной точки и запроса последнего количества.

На мой взгляд, лучшим решением было бы создание события при изменении количества вашего продукта (либо проданного, либо сток пополняется). Затем вы можете подключить это событие к трансляции на ваш веб-интерфейс.

В результате ваш веб-интерфейс будет получать уведомления при каждом изменении запасов, а не по необязательному опросу каждую минуту. Это дает вам преимущество в том, что вам не нужно каждую минуту вбивать свою базу данных в планировщик, чтобы увидеть, изменились ли какие-либо данные, и возможность мгновенно обновлять ваш пользовательский интерфейс при изменении запасов для продукта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...