Um real-time aplicativo de chat é um excelente exemplo de como WebSocket pode revolucionar real-time a comunicação interativa na web. Neste artigo, veremos como criar um aplicativo de bate-papo simples usando Laravel e integrando WebSocket usando o laravel-websockets
package para fornecer experiências de comunicação responsivas e interativas aos usuários.
Objetivos do Aplicativo
Vamos construir um real-time aplicativo de chat com as seguintes características:
Enviar e receber mensagens instantaneamente: os usuários podem enviar e receber mensagens instantaneamente sem precisar atualizar a página.
Lista de usuários online: o aplicativo exibirá uma lista de usuários online e seu status de bate-papo.
Enviar imagens e arquivos: os usuários podem compartilhar imagens e arquivos no chat.
Introdução à instalação e configuração
Para começar, precisamos instalar laravel-websockets
package e configurar para integrar WebSocket com Laravel. Siga esses passos:
Instale o laravel-websockets
package: Comece instalando o package usando Composer.
composer require pusher/pusher-php-server
Publique o arquivo de configuração: após a instalação, publique o arquivo de configuração para personalizar as configurações.
php artisan vendor:publish --tag=websockets-config
Executar migration: Crie as tabelas de banco de dados necessárias para WebSocket.
php artisan migrate
Iniciar WebSocket servidor: inicie o WebSocket servidor para lidar com real-time as conexões
php artisan websockets:serve
Construindo a interface do usuário
Criaremos uma interface de usuário simples usando HTML, CSS e JavaScript para exibir a lista de mensagens, a caixa de entrada e a lista de usuários online.
<!-- resources/views/chat.blade.php -->
<div id="app">
<div class="chat-container">
<div class="chat-box">
<div class="chat-messages">
<div class="message" v-for="message in messages":key="message.id">
{{ message.user }}: {{ message.content }}
</div>
</div>
<div class="input-box">
<input v-model="newMessage" @keydown.enter="sendMessage" placeholder="Enter your message...">
</div>
</div>
</div>
</div>
Integrando WebSocket e Broadcasting
Usaremos Laravel Broadcasting para integrar WebSocket com o aplicativo.
Instalar Pusher: Instale o pusher/pusher-php-server
package para usar Pusher como Broadcasting driver.
composer require pusher/pusher-php-server
Configure Broadcasting: No config/broadcasting.php
arquivo, configure o driver e forneça suas Pusher credenciais.
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true,
],
],
Crie um evento e transmita: crie um evento ChatMessageSent e transmita-o quando um usuário enviar uma mensagem.
// app/Events/ChatMessageSent.php
public function broadcastOn()
{
return new Channel('chat');
}
Script JavaScript: Use JavaScript para ouvir eventos do servidor e atualizar a interface do usuário.
// resources/js/app.js
require('./bootstrap');
import Vue from 'vue';
import Chat from './components/Chat.vue';
const app = new Vue({
el: '#app',
components: {
Chat
}
});
Conclusão
Ao concluir este tutorial, você construiu com sucesso um real-time aplicativo de bate-papo usando WebSocket o Laravel. Os usuários podem enviar e receber mensagens instantaneamente, e você testemunhou como WebSocket fornece uma experiência de comunicação responsiva e interativa.