Real-time Уведомления с Laravel и Redis

Real-time уведомления — это обычная функция веб-приложений, позволяющая предоставлять мгновенные оповещения и обновления пользователям без необходимости обновлять страницу. В Laravel, вы можете легко интегрироваться Redis для real-time эффективной реализации уведомлений. Redis будет использоваться как очередь для мгновенной доставки уведомлений с сервера клиенту.

Установка Redis и Laravel

Для начала установите Redis на свой сервер и установите predis/predis пакет Laravel через Composer.

composer require predis/predis

Интеграция Real-time уведомлений

Настроить очередь в Laravel

Сначала настройте очередь, Laravel добавив Redis информацию в .env файл.

QUEUE_CONNECTION=redis  
REDIS_HOST=127.0.0.1  
REDIS_PASSWORD=null  
REDIS_PORT=6379  

Создать Event

Создайте event в Laravel, чтобы отправлять real-time уведомления.

php artisan make:event NewNotificationEvent

Затем откройте app/Events/NewNotificationEvent.php файл и настройте event содержимое.

use Illuminate\Broadcasting\Channel;  
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;  
use Illuminate\Queue\SerializesModels;  
  
class NewNotificationEvent implements ShouldBroadcastNow  
{  
    use SerializesModels;  
  
    public $message;  
  
    public function __construct($message)  
    {  
        $this->message = $message;  
    }  
  
    public function broadcastOn()  
    {  
        return new Channel('notifications');  
    }  
}  

Настроить Broadcast Driver

Откройте config/broadcasting.php файл и используйте redis драйвер для реализации real-time уведомлений с расширением Redis.

'connections' => [  
    'redis' => [  
        'driver' => 'redis',  
        'connection' => 'default',  
    ],  
    // ...  
],  

Отправить Real-time уведомление

Когда вам нужно отправить real-time уведомление, используйте event только что созданный в контроллере или поставщике услуг.

use App\Events\NewNotificationEvent;  
  
public function sendNotification()  
{  
    $message = 'You have a new notification!';  
    event(new NewNotificationEvent($message));  
}  

Обработка Real-time уведомлений на клиенте

Наконец, обработайте real-time уведомление на клиенте с помощью JavaScript и Laravel Echo. Убедитесь, что вы установили и настроили Laravel Echo для своего приложения.

// Connect to the 'notifications' channel  
const channel = Echo.channel('notifications');  
  
// Handle the event when receiving a real-time notification  
channel.listen('.NewNotificationEvent',(notification) => {  
    alert(notification.message);  
});  

 

Заключение

Интеграция Redis и Laravel позволяет легко развертывать real-time уведомления в вашем веб-приложении. Когда появится новое уведомление, приложение отправит его через Redis, и клиент получит уведомление мгновенно, без необходимости обновлять страницу. Это улучшает взаимодействие с пользователем и повышает интерактивность приложения.