Real-time Meddelelser med Laravel og Redis

Real-time meddelelser er en almindelig funktion i webapplikationer for at give øjeblikkelige advarsler og opdateringer til brugere uden behov for at opdatere siden. I Laravel kan du nemt integrere Redis for at implementere real-time notifikationer effektivt. Redis vil blive brugt som en kø til at levere meddelelser fra serveren til klienten med det samme.

Installation Redis og Laravel

For at komme i gang skal du installere Redis på din server og installere predis/predis pakken Laravel via Composer.

composer require predis/predis

Integrering af Real-time meddelelser

Konfigurer kø i Laravel

Først skal du konfigurere køen Laravel ved at tilføje Redis oplysningerne til .env filen.

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

Opret en Event

Opret en event ind Laravel for at sende real-time notifikationer.

php artisan make:event NewNotificationEvent

Åbn derefter filen app/Events/NewNotificationEvent.php og tilpas event indholdet.

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

Konfigurer Broadcast Driver

Åbn config/broadcasting.php filen og brug redis driveren til at implementere real-time meddelelser med Redis.

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

Send Real-time meddelelse

Når du skal sende en real-time notifikation, skal du bruge den, event du lige har oprettet i en controller eller tjenesteudbyder.

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

Håndtere Real-time meddelelse på klienten

Håndter endelig real-time meddelelsen på klienten ved hjælp af JavaScript og Laravel Echo. Sørg for, at du har installeret og konfigureret Laravel Echo til din applikation.

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

 

Konklusion

Integrerer Redis og Laravel giver dig mulighed for nemt at implementere real-time meddelelser i din webapplikation. Når der er en ny meddelelse, vil applikationen sende den gennem Redis, og klienten vil modtage meddelelsen med det samme, uden at det er nødvendigt at opdatere siden. Dette forbedrer brugeroplevelsen og forbedrer applikationens interaktivitet.