Real-time Powiadomienia są powszechną funkcją aplikacji internetowych, która zapewnia użytkownikom natychmiastowe alerty i aktualizacje bez konieczności odświeżania strony. W Laravel, możesz łatwo zintegrować Redis, aby wydajnie wdrażać real-time powiadomienia. Redis będzie używany jako kolejka do natychmiastowego dostarczania powiadomień z serwera do klienta.
Instalacja Redis i Laravel
Aby rozpocząć, zainstaluj Redis na swoim serwerze i zainstaluj predis/predis
pakiet Laravel przez Composer.
composer require predis/predis
Integracja Real-time powiadomień
Skonfiguruj kolejkę w Laravel
Najpierw skonfiguruj kolejkę, Laravel dodając Redis informacje do .env
pliku.
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Stworzyć Event
Utwórz event w Laravel celu wysyłania real-time powiadomień.
php artisan make:event NewNotificationEvent
Następnie otwórz app/Events/NewNotificationEvent.php
plik i dostosuj event zawartość.
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');
}
}
Skonfiguruj Broadcast Driver
Otwórz config/broadcasting.php
plik i użyj redis
sterownika do zaimplementowania real-time powiadomień z rozszerzeniem Redis.
'connections' => [
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
// ...
],
Wyślij Real-time powiadomienie
Gdy potrzebujesz wysłać real-time powiadomienie, skorzystaj z event utworzonego właśnie w kontrolerze lub u usługodawcy.
use App\Events\NewNotificationEvent;
public function sendNotification()
{
$message = 'You have a new notification!';
event(new NewNotificationEvent($message));
}
Obsługa Real-time powiadomień na kliencie
Na koniec obsłuż real-time powiadomienie na kliencie za pomocą JavaScript i Laravel Echo. Upewnij się, że zainstalowałeś i skonfigurowałeś Laravel Echo dla swojej aplikacji.
// 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);
});
Wniosek
Integracja Redis i Laravel umożliwia łatwe wdrażanie real-time powiadomień w aplikacji internetowej. Gdy pojawi się nowe powiadomienie, aplikacja wyśle je przez Redis, a klient otrzyma powiadomienie natychmiast, bez konieczności odświeżania strony. Poprawia to komfort użytkowania i zwiększa interaktywność aplikacji.