A integração Laravel WebSocket com um banco de dados é uma parte crucial da criação de aplicativos em tempo real, como bate-papo, notificações instantâneas e rastreamento de eventos. Ao combinar WebSocket com um banco de dados, podemos armazenar e gerenciar dados em tempo real com eficiência. Veja como integrar Laravel WebSocket com um banco de dados.
Etapa 1: instalar Laravel WebSocket o pacote
Em primeiro lugar, instale e configure o laravel-websockets
pacote. Use o Composer para instalar o pacote:
composer require beyondcode/laravel-websockets
Depois de instalado, você precisa publicar os arquivos de configuração e executar as tarefas necessárias:
php artisan vendor:publish --tag=websockets-config
php artisan migrate
Etapa 2: criar tabela de banco de dados para mensagens
Vamos criar uma tabela no banco de dados para armazenar as mensagens. Use o seguinte comando para criar a messages
tabela:
php artisan make:model Message -m
Depois de executar o comando, você verá um migration arquivo criado no database/migrations
diretório. Abra o migration arquivo e defina a estrutura da messages
tabela:
// 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');
});
}
Execute o migration comando para criar a tabela no banco de dados:
php artisan migrate
Etapa 3: Manipulando a persistência da mensagem via WebSocket
Quando um usuário envia uma mensagem, precisamos manipular e persistir a mensagem no banco de dados. No evento de mensagem enviada, você pode usar Laravel Broadcasting para enviar a mensagem WebSocket e simultaneamente salvar a mensagem no banco de dados.
// 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();
}
Conclusão
A integração Laravel WebSocket com um banco de dados permite que você armazene e gerencie dados em tempo real de forma eficaz. Ao combinar WebSocket com um banco de dados, você pode criar aplicativos complexos em tempo real, como bate-papo, notificações instantâneas e rastreamento de eventos de maneira flexível e poderosa.