Real-time Powiadomienia za pomocą Laravel i Redis

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.