Integravimas Laravel WebSocket su duomenų baze: duomenų valdymas realiuoju laiku

Integravimas Laravel WebSocket su duomenų baze yra esminė dalis kuriant programas realiuoju laiku, pvz., pokalbius, momentinius pranešimus ir įvykių stebėjimą. Derindami WebSocket su duomenų baze, galime efektyviai saugoti ir valdyti duomenis realiuoju laiku. Štai kaip integruoti Laravel WebSocket su duomenų baze.

1 veiksmas: įdiekite Laravel WebSocket paketą

Pirmiausia įdiekite ir sukonfigūruokite laravel-websockets paketą. Norėdami įdiegti paketą, naudokite „Composer“:

composer require beyondcode/laravel-websockets

Įdiegę turite paskelbti konfigūracijos failus ir atlikti būtinas užduotis:

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

2 veiksmas: sukurkite pranešimų duomenų bazės lentelę

Duomenų bazėje sukursime lentelę žinutėms saugoti. Norėdami sukurti lentelę, naudokite šią komandą messages:

php artisan make:model Message -m

Paleidę komandą pamatysite migration kataloge sukurtą failą database/migrations. Atidarykite migration failą ir nustatykite lentelės struktūrą 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');  
    });  
}  

Paleiskite migration komandą, kad sukurtumėte lentelę duomenų bazėje:

php artisan migrate

3 veiksmas: pranešimo pastovumo tvarkymas per WebSocket

Kai vartotojas siunčia pranešimą, mes turime jį apdoroti ir išsaugoti duomenų bazėje. Pranešimo išsiuntimo įvykyje galite naudoti Laravel transliavimą, kad išsiųstumėte pranešimą WebSocket ir kartu išsaugotumėte pranešimą duomenų bazėje.

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

Išvada

Integravimas Laravel WebSocket su duomenų baze leidžia efektyviai saugoti ir valdyti duomenis realiuoju laiku. Sujungę WebSocket su duomenų baze galite kurti sudėtingas realiojo laiko programas, tokias kaip pokalbiai, momentinius pranešimus ir įvykių stebėjimą lanksčiu ir galingu būdu.