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.