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

1. Установка Laravel Broadcasting

Для начала убедитесь, что у вас установлен Laravel и Composer. Создайте новый проект Laravel, если у вас его еще нет:

composer create-project --prefer-dist laravel/laravel broadcasting-example

Перейдите в директорию проекта:

cd broadcasting-example

Laravel Broadcasting уже включен в Laravel по умолчанию, поэтому вам не нужно устанавливать дополнительные пакеты.

2. Настройка Broadcasting

В файле .env выберите драйвер broadcasting, который вы хотите использовать. Laravel поддерживает несколько драйверов, включая pusher, redis, log (для логгирования событий) и другие.

BROADCAST_DRIVER=pusher

3. Создание события

События в Laravel Broadcasting представляют собой классы, которые содержат информацию о событии, которое произошло. Чтобы создать событие, используйте команду make:event:

php artisan make:event OrderShipped

Это создаст класс OrderShipped в директории app/Events. В этом классе вы можете определить данные, которые будут переданы клиентам:

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class OrderShipped implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $order;

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

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

4. Отправка события

Чтобы отправить событие, используйте метод event:

event(new OrderShipped($order));

5. Настройка клиента

На стороне клиента вам нужно будет настроить соединение с сервером broadcasting. Это может быть сделано с помощью JavaScript SDK для выбранного вами драйвера broadcasting. Например, для Pusher:

import Echo from 'laravel-echo';

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'your-pusher-key',
    cluster: 'your-pusher-cluster',
    encrypted: true
});

6. Прослушивание событий на клиенте

На стороне клиента вы можете прослушивать события, используя метод listen:

Echo.channel('orders')
    .listen('OrderShipped', (e) => {
        console.log(e.order);
    });

Заключение

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