Laravel и Pusher интеграция

В современном ландшафте веб-разработки вещание данных в реальном времени больше не роскошь — это необходимость. Laravel, популярный PHP-фреймворк, упрощает реализацию событий в реальном времени с помощью своей функции вещания. Соедините это с Pusher Channels, и у вас будет надежное решение для доставки обновлений в реальном времени вашим пользователям.

В этой записи блога рассматривается, как использовать Laravel Broadcasting с Pusher Channels для создания динамических веб-приложений в реальном времени.

Что такое Laravel Broadcasting?

Laravel Broadcasting позволяет вам транслировать ваши серверные события Laravel в ваше клиентское веб-приложение. Он использует WebSockets для установления соединения между вашим сервером и клиентом, обеспечивая передачу данных в реальном времени без необходимости опроса.

Pusher Channels: краткий обзор

Pusher Channels — это служба обмена сообщениями в реальном времени, которая позволяет добавлять функции реального времени в ваши веб- и мобильные приложения. Она управляет и масштабирует соединения WebSocket, обеспечивая надежную и безопасную связь между клиентом и сервером.

Настройка Laravel с Pusher Channels

Для начала вам необходимо настроить Pusher Channels в вашем проекте Laravel.

Установите Pusher PHP Server SDK:

composer require pusher/pusher-php-server

Настройте файл .env:

Добавьте ваши учетные данные Pusher в файл .env:

PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_APP_CLUSTER=your-app-cluster

Настройте broadcasting.php:

В config/broadcasting.php установите Pusher в качестве вещателя по умолчанию:

'default' => env('BROADCAST_DRIVER', 'pusher'),

Создание Broadcasting Events

В Laravel каждое событие трансляции представлено классом. Давайте создадим простое событие.

Создать событие:

php artisan make:event OrderStatusUpdated

Реализовать ShouldBroadcast:

Обновите класс событий, чтобы реализовать ShouldBroadcast и определить данные для трансляции:

use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class OrderStatusUpdated implements ShouldBroadcast
{
 public $orderId;
 public $status;

 public function __construct($orderId, $status)
 {
 $this->orderId = $orderId;
 $this->status = $status;
 }

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

Интеграция с интерфейсом

На клиенте вам необходимо прослушивать событие:

Установите библиотеку Pusher JS:

<script src="https://js.pusher.com/7.0/pusher.min.js"></script>

Подпишитесь на канал:

var pusher = new Pusher('your-app-key', {
 cluster: 'your-app-cluster'
});

var channel = pusher.subscribe('orders');
channel.bind('OrderStatusUpdated', function(data) {
 alert('Order ' + data.orderId + ' status updated to ' + data.status);
});

Трансляция события

Чтобы транслировать событие, просто отправьте его из своего приложения Laravel:

event(new OrderStatusUpdated($orderId, 'shipped'));

Заключение

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