Mengintegrasikan Laravel WebSocket dengan Database: Manajemen Data Real-Time

Mengintegrasikan Laravel WebSocket dengan database adalah bagian penting dalam membangun aplikasi waktu nyata seperti Obrolan, pemberitahuan instan, dan pelacakan peristiwa. Dengan menggabungkannya WebSocket dengan database, kita dapat menyimpan dan mengelola data real-time secara efektif. Berikut cara mengintegrasikan Laravel WebSocket dengan database.

Langkah 1: Instal Laravel WebSocket Paket

Pertama, instal dan konfigurasikan laravel-websockets paket. Gunakan Komposer untuk menginstal paket:

composer require beyondcode/laravel-websockets

Setelah diinstal, Anda perlu menerbitkan file konfigurasi dan melakukan tugas yang diperlukan:

php artisan vendor:publish --tag=websockets-config  
php artisan migrate  

Langkah 2: Buat Tabel Database untuk Pesan

Kami akan membuat tabel di database untuk menyimpan pesan. Gunakan perintah berikut untuk membuat messages tabel:

php artisan make:model Message -m

Setelah menjalankan perintah, Anda akan melihat migration file yang dibuat di database/migrations direktori. Buka migration file dan tentukan struktur tabel messages:

// database/migrations/xxxx_xx_xx_create_messages_table.php  
  
public function up()  
{  
    Schema::create('messages', function(Blueprint $table) {  
        $table->id();  
        $table->unsignedBigInteger('user_id');  
        $table->text('content');  
        $table->timestamps();  
  
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');  
    });  
}  

Jalankan migration perintah untuk membuat tabel di database:

php artisan migrate

Langkah 3: Menangani Persistensi Pesan via WebSocket

Saat pengguna mengirim pesan, kita perlu menangani dan menyimpan pesan tersebut ke dalam database. Dalam peristiwa terkirim pesan, Anda dapat menggunakan Laravel Penyiaran untuk mengirim pesan WebSocket dan sekaligus menyimpan pesan dalam database.

// app/Events/MessageSent.php  
  
public function broadcastOn()  
{  
    return new Channel('chat');  
}  
  
public function broadcastWith()  
{  
    return [  
        'message' => $this->message,  
        'user' => $this->user,  
    ];  
}  
// app/Listeners/SaveMessage.php  
  
public function handle(MessageSent $event)  
{  
    $message = new Message();  
    $message->user_id = $event->user->id;  
    $message->content = $event->message;  
    $message->save();  
}  

Kesimpulan

Mengintegrasikan Laravel WebSocket dengan database memungkinkan Anda menyimpan dan mengelola data real-time secara efektif. Dengan menggabungkannya WebSocket dengan database, Anda dapat membangun aplikasi real-time yang kompleks seperti Obrolan, notifikasi instan, dan pelacakan peristiwa dengan cara yang fleksibel dan andal.