Real-time уведомления — это обычная функция веб-приложений, позволяющая предоставлять мгновенные оповещения и обновления пользователям без необходимости обновлять страницу. В Laravel, вы можете легко интегрироваться Redis для real-time эффективной реализации уведомлений. Redis будет использоваться как очередь для мгновенной доставки уведомлений с сервера клиенту.
Установка Redis и Laravel
Для начала установите Redis на свой сервер и установите predis/predis
пакет Laravel через Composer.
composer require predis/predis
Интеграция Real-time уведомлений
Настроить очередь в Laravel
Сначала настройте очередь, Laravel добавив Redis информацию в .env
файл.
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Создать Event
Создайте event в Laravel, чтобы отправлять real-time уведомления.
php artisan make:event NewNotificationEvent
Затем откройте app/Events/NewNotificationEvent.php
файл и настройте event содержимое.
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');
}
}
Настроить Broadcast Driver
Откройте config/broadcasting.php
файл и используйте redis
драйвер для реализации real-time уведомлений с расширением Redis.
'connections' => [
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
// ...
],
Отправить Real-time уведомление
Когда вам нужно отправить real-time уведомление, используйте event только что созданный в контроллере или поставщике услуг.
use App\Events\NewNotificationEvent;
public function sendNotification()
{
$message = 'You have a new notification!';
event(new NewNotificationEvent($message));
}
Обработка Real-time уведомлений на клиенте
Наконец, обработайте real-time уведомление на клиенте с помощью JavaScript и Laravel Echo. Убедитесь, что вы установили и настроили Laravel Echo для своего приложения.
// 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);
});
Заключение
Интеграция Redis и Laravel позволяет легко развертывать real-time уведомления в вашем веб-приложении. Когда появится новое уведомление, приложение отправит его через Redis, и клиент получит уведомление мгновенно, без необходимости обновлять страницу. Это улучшает взаимодействие с пользователем и повышает интерактивность приложения.