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 และไคลเอนต์จะได้รับการแจ้งเตือนทันทีโดยไม่จำเป็นต้องรีเฟรชหน้านี้ สิ่งนี้ช่วยปรับปรุงประสบการณ์ผู้ใช้และเพิ่มความสามารถในการโต้ตอบของแอปพลิเคชัน