Real-time การแจ้งเตือนด้วย Laravel และ Redis

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