Real-time Notificaciones con Laravel y Redis

Real-time Las notificaciones son una característica común en las aplicaciones web para proporcionar alertas y actualizaciones instantáneas a los usuarios sin necesidad de actualizar la página. En Laravel, puede integrarse fácilmente Redis para implementar real-time notificaciones de manera eficiente. Redis se usará como una cola para entregar notificaciones del servidor al cliente al instante.

Instalación Redis y Laravel

Para comenzar, instálelo Redis en su servidor e instale el predis/predis paquete a Laravel través de Composer.

composer require predis/predis

Integración Real-time de notificaciones

Configurar cola en Laravel

Primero, configure la cola Laravel agregando la Redis información al .env archivo.

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

Crear un Event

Crea una event entrada Laravel para enviar real-time notificaciones.

php artisan make:event NewNotificationEvent

Luego, abra el app/Events/NewNotificationEvent.php archivo y personalice el event contenido.

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');  
    }  
}  

Configurar Broadcast Driver

Abra el config/broadcasting.php archivo y use el redis controlador para implementar real-time notificaciones con Redis.

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

Enviar Real-time notificación

Cuando necesite enviar una real-time notificación, use la event que acaba de crear en un controlador o proveedor de servicios.

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

Manejar Real-time notificación en el cliente

Finalmente, maneje la real-time notificación en el cliente usando JavaScript y Laravel Echo. Asegúrese de haber instalado y configurado Laravel Echo para su aplicación.

// 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);  
});  

 

Conclusión

La integración Redis y Laravel le permite implementar fácilmente real-time notificaciones en su aplicación web. Cuando haya una nueva notificación, la aplicación la enviará a través de Redis, y el cliente recibirá la notificación al instante sin necesidad de actualizar la página. Esto mejora la experiencia del usuario y mejora la interactividad de la aplicación.