Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Що таке Laravel Reverb і як підключити його для трансляції подій?

Reverb - власний WebSocket-сервер Laravel, написаний на PHP. Він замінює сторонні сервіси на кшталт Pusher чи Ably: замість платити за кількість з'єднань і повідомлень, ви запускаєте сервер на своїй інфраструктурі.

Reverb реалізує протокол Pusher, тому фронтенд працює зі звичним Laravel Echo і клієнтом pusher-js, а перехід з Pusher на Reverb (чи назад) - це зміна змінних оточення.

Встановлення:

php artisan install:broadcasting --reverb

Команда встановлює пакети Composer і NPM, публікує конфігурацію, створює routes/channels.php і додає в .env ключі:

BROADCAST_CONNECTION=reverb
REVERB_APP_ID=...
REVERB_APP_KEY=...
REVERB_APP_SECRET=...
REVERB_HOST=localhost
REVERB_PORT=8080

Запуск сервера:

php artisan reverb:start
php artisan reverb:start --debug   # показувати вхідні й вихідні повідомлення

Подія для трансляції:

class OrderShipped implements ShouldBroadcast
{
    public function __construct(public Order $order) {}

    public function broadcastOn(): array
    {
        return [new PrivateChannel('orders.' . $this->order->user_id)];
    }
}

Прослуховування на фронтенді:

Echo.private(`orders.${userId}`).listen('OrderShipped', (e) => {
    console.log(e.order);
});

Що важливо пам'ятати:

  • ShouldBroadcast відправляє подію через чергу - без запущеного воркера повідомлення не надходять. ShouldBroadcastNow - одразу, без черги;
  • REVERB_SERVER_HOST/REVERB_SERVER_PORT - де слухає сам сервер, а REVERB_HOST/REVERB_PORT - куди Laravel надсилає повідомлення. На продакшені Reverb зазвичай слухає 0.0.0.0:8080, а назовні доступний через Nginx на 443;
  • Reverb - довгоживучий процес: після деплою його треба перезапустити (reverb:restart), а на сервері тримати під Supervisor.

Докладніше в документації: Broadcasting: Reverb

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання