Real-time Notifiche con Laravel e Redis

Real-time le notifiche sono una caratteristica comune nelle applicazioni Web per fornire avvisi istantanei e aggiornamenti agli utenti senza la necessità di aggiornare la pagina. In Laravel, puoi integrare facilmente Redis per implementare real-time le notifiche in modo efficiente. Redis verrà utilizzato come coda per consegnare istantaneamente le notifiche dal server al client.

Installazione Redis e Laravel

Per iniziare, installa Redis sul tuo server e installa il predis/predis pacchetto Laravel tramite Composer.

composer require predis/predis

Integrazione Real-time delle notifiche

Configura coda in entrata Laravel

Innanzitutto, configura la coda Laravel aggiungendo le Redis informazioni al .env file.

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

Creare un Event

Crea un event in Laravel per inviare real-time notifiche.

php artisan make:event NewNotificationEvent

Quindi, apri il app/Events/NewNotificationEvent.php file e personalizza il event contenuto.

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

Configura Broadcast Driver

Apri il config/broadcasting.php file e usa il redis driver per implementare real-time le notifiche con Redis.

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

Invia Real-time notifica

Quando è necessario inviare una real-time notifica, utilizzare il event appena creato in un controller o fornitore di servizi.

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

Gestire Real-time la notifica sul client

Infine, gestisci la real-time notifica sul client utilizzando JavaScript ed Laravel Echo. Assicurati di aver installato e configurato Laravel Echo per la tua applicazione.

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

 

Conclusione

L'integrazione Redis e Laravel ti consente di distribuire facilmente real-time le notifiche nella tua applicazione web. Quando c'è una nuova notifica, l'applicazione la invierà tramite Redis e il client riceverà la notifica immediatamente senza la necessità di aggiornare la pagina. Ciò migliora l'esperienza dell'utente e migliora l'interattività dell'applicazione.