Real-time Notificações com Laravel e Redis

Real-time notificações são um recurso comum em aplicativos da web para fornecer alertas instantâneos e atualizações aos usuários sem a necessidade de atualizar a página. No Laravel, você pode integrar facilmente Redis para implementar real-time notificações com eficiência. Redis será usado como uma fila para enviar notificações do servidor para o cliente instantaneamente.

Instalando Redis e Laravel

Para começar, instale Redis em seu servidor e instale o predis/predis pacote Laravel via Composer.

composer require predis/predis

Integrando Real-time Notificações

Configurar fila em Laravel

Primeiro, configure a fila Laravel adicionando as Redis informações ao .env arquivo.

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

Criar um Event

Crie um event in Laravel para enviar real-time notificações.

php artisan make:event NewNotificationEvent

Em seguida, abra o app/Events/NewNotificationEvent.php arquivo e personalize o event conteúdo.

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

configurar Broadcast Driver

Abra o config/broadcasting.php arquivo e use o redis driver para implementar real-time as notificações com extensão Redis.

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

Enviar Real-time Notificação

Quando precisar enviar uma real-time notificação, use o que event você acabou de criar em um controlador ou provedor de serviços.

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

Lidar com Real-time notificação no cliente

Por fim, manipule a real-time notificação no cliente usando JavaScript e Laravel Echo. Certifique-se de ter instalado e configurado Laravel o Echo para seu aplicativo.

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

 

Conclusão

A integração Redis e Laravel permite que você implante real-time notificações facilmente em seu aplicativo da web. Quando houver uma nova notificação, o aplicativo enviará por Redis, e o cliente receberá a notificação instantaneamente sem a necessidade de atualizar a página. Isso melhora a experiência do usuário e aumenta a interatividade do aplicativo.