Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Já se perguntou como funciona o WhatsApp? Ou como diferentes usuários se conectam e trocam mensagens em chats? Criar um aplicativo de bate-papo simplificado pode ser uma ótima maneira de entender as principais funcionalidades por trás dos aplicativos de bate-papo.

Construir um aplicativo de bate-papo pode parecer uma tarefa assustadora, no entanto, o Firebase simplifica o processo. Ele permite inicializar rapidamente qualquer aplicativo, eliminando a necessidade de um back-end personalizado ou configuração de banco de dados.

O que é banco de dados em nuvem do Firebase

O Firebase é uma plataforma de desenvolvimento baseada em nuvem que oferece uma variedade de serviços de back-end, como banco de dados em tempo real, autenticação e hospedagem. No centro de seus serviços de banco de dados, está um banco de dados em nuvem NoSQL que utiliza um modelo de documento para armazenar dados em tempo real.

instagram viewer

Configurar o Firebase Project e o React Client

Você pode verificar o código do aplicativo de chat disponível neste Repositório GitHub e é gratuito para uso sob a licença MIT. Certifique-se de configurar o Firebase antes de executar o aplicativo.

Para começar, acesse Firebase e inscreva-se em uma conta. No painel do usuário, clique em Criar Projeto para montar um novo projeto.

Depois de criar seu projeto, selecione e clique no ícone de código na página de visão geral do projeto para registrar seu aplicativo. O registro no Firebase permite que você acesse e utilize seus recursos para criar seu aplicativo da web React.

Observe as instruções para integrar o SDK do Firebase ao seu projeto em Adicionar Firebase SDK.

Próximo, criar um aplicativo React e instale o Firebase SDK em seu aplicativo. Além disso, importe o react-firebase-hooks pacote que simplifica o trabalho com o Firebase In React.

npm instalar firebase react-firebase-hooks

Configurar o Firebase em seu aplicativo React

Na tua origem diretório, crie um novo arquivo e nomeie-o, firebase-config.js. Copie as variáveis ​​de ambiente do painel do projeto Firebase e cole-as neste arquivo.

importar {inicializarAplicativo} de"firebase/aplicativo";
importar { getFirestore } de'@firebase/firestore';
importar { getAuth, GoogleAuthProvider } de"firebase/autenticação";

const firebaseConfig = {
Chave API: "CHAVE API",
domínio de autenticação: "authDomain",
ID do projeto: "código do projeto",
armazenamentoBalde: "balde de armazenamento",
messageSenderId: "ID do remetente de mensagens",
appId: "ID do aplicativo"
};
const app = initializeApp (firebaseConfig);
const db = getFirestore (aplicativo);
const auth = getAuth (aplicativo)
const provedor = novo GoogleAuthProvider();

exportar {db, auth, provedor}

Usando a configuração do seu projeto Firebase, você inicializa as funções de autenticação do Firebase, Firestore e Firebase para uso em seu aplicativo.

Configurar um banco de dados do Firestore

Este banco de dados armazenará dados do usuário e mensagens de bate-papo. Vá até a página de visão geral do seu projeto e clique em Criar banco de dados botão para configurar seu Cloud Firestore.

Defina o modo e o local do banco de dados.

Por fim, atualize as regras do banco de dados Firestore para permitir operações de leitura e gravação do aplicativo React. Clique no Regras guia e altere o Leia e escreva regra para verdadeiro.

Depois de configurar o banco de dados, você pode criar uma coleção de demonstração - este é um banco de dados NoSQL no Firestore. As coleções são compostas de documentos como registros.

Para criar uma nova coleção, clique no botão Iniciar coleção botão e forneça um ID de coleção — um nome de tabela.

Integre a autenticação de usuário do Firebase

O Firebase fornece recursos prontos para uso autenticação e autorização soluções fáceis de implementar, como provedores de login social ou provedor de senha de e-mail personalizado.

Na página de visão geral do seu projeto, selecione Autenticação da lista de produtos exibidos. A seguir, clique no Método de login de configuração botão para configurar o provedor do Google. Selecione Google na lista de Provedores, habilite-o e preencha o e-mail de suporte do projeto.

Criar um componente de login

Depois de configurar o provedor no Firebase, vá para a pasta do projeto e crie uma nova pasta, componentes, no /src diretório. Dentro de componentes pasta, crie um novo arquivo: SignIn.js.

No SignIn.js arquivo, adicione o código abaixo:

importar Reagir de'reagir';
importar { entrarComPopup } de"firebase/autenticação";
importar { autent, provedor } de'../firebase-config'

funçãoEntrar() {
const signInWithGoogle = () => {
signInWithPopup (autenticação, provedor)
};
retornar (

exportarpadrão Entrar

  • Esse código importa a autenticação e os objetos do provedor do Google que você inicializou no arquivo de configuração do Firebase.
  • Em seguida, define um Entrar função que implementa o signInWithPopup método do Firebase que leva no autenticação e fornecedor componentes como parâmetros. Esta função autenticará os usuários com seus logins sociais do Google.
  • Por fim, retorna um div contendo um botão que, ao ser clicado, chama o Faça login no Google função.

Criar um componente de bate-papo

Este componente abrigará o principal recurso do seu aplicativo de bate-papo, a janela de bate-papo. Crie um novo arquivo dentro do componentes pasta e nomeie-a Chat.js.

Adicione o código abaixo no Chat.js Arquivo:

importar Reagir, { useState, useEffect } de'reagir'
importar { banco de dados, autenticação } de'../firebase-config'
importar Enviar mensagem de'./Enviar mensagem'
importar { coleção, consulta, limite, orderBy, onSnapshot } de"firebase/firestore";

funçãoBater papo() {
const [mensagens, setMessages] = useState([])
const { userID } = auth.currentUser

useEffect(() => {
const q = consulta(
coleção (db, "mensagens"),
ordenar por("criado em"),
limite(50)
);
const dados = onSnapshot (q, (QuerySnapshot) => {
deixar mensagens = [];
QuerySnapshot.forEach((documento) => {
mensagens.push({ ...doc.data(), eu ia: doc.id });
});
setMessages (mensagens)

});
retornar() => dados;

}, []);

retornar (


  • Este código importa o banco de dados, os componentes de autenticação inicializados no firebase-config.js file e métodos personalizados do Firestore que facilitam a manipulação dos dados armazenados.
  • Ele implementa o coleção, consulta, limite, ordenar por, e no instantâneo Métodos do Firestore para consultar e capturar um instantâneo dos dados atualmente armazenados na coleção de mensagens do Firestore, ordenados pelo momento em que foram criados e lê apenas as 50 mensagens mais recentes.
  • Os métodos do Firestore são encapsulados e executados dentro de um useEffect gancho para garantir que as mensagens sejam renderizadas imediatamente, toda vez que você pressionar o botão enviar, sem atualizar a janela da página. Depois que os dados são lidos, eles são armazenados no estado de mensagens.
  • Em seguida, ele verifica a diferença entre mensagens enviadas e recebidas — se o ID do usuário armazenado com a mensagem corresponder o ID do usuário para o usuário conectado e, posteriormente, define o nome da classe e aplica o estilo apropriado para o mensagem.
  • Por fim, ele processa as mensagens, uma sair botão e o Enviar mensagem componente. O sair botão ao clicar manipulador chama o auth.signOut() fornecido pelo Firebase.

Criar um componente de envio de mensagem

Crie um novo arquivo, SendMessage.js arquivo e adicione o código abaixo:

importar Reagir, { useState } de'reagir'
importar { banco de dados, autenticação } de'../firebase-config'
importar { coleção, addDoc, servidorTimestamp} de"firebase/firestore";

funçãoEnviar mensagem() {
const [msg, setMsg] = useState('')
const messageRef = coleção (db, "mensagens");

const enviarMsg = assíncrono (e) => {
const { uid, fotoURL } = auth.currentUser

aguardam addDoc (messagesRef, {
texto: mensagem,
criadoAt: serverTimestamp(),
uid: uid,
fotoURL: fotoURL
})
setMsg('');
};

retornar (


'Mensagem...'
tipo="texto" valor={msg}
onChange={(e) => setMsg (e.target.value)}
/>

exportarpadrão Enviar mensagem

  • Semelhante ao Chat.js componente, importe os métodos do Firestore e o banco de dados inicializado e os componentes de autenticação.
  • Para enviar mensagens, o Enviar mensagem função implementa o addDoc Método Firestore que cria um novo documento no banco de dados e armazena os dados passados.
  • O addDoc O método aceita dois parâmetros, o objeto de dados e um objeto de referência que indica qual coleção você deseja armazenar os dados. O método de coleta Firestore especifica a coleção para armazenar dados.
  • Por fim, ele renderiza um campo de entrada e um botão na página da Web para permitir que os usuários enviem mensagens ao banco de dados.

Importar os componentes no arquivo App.js

Por último, em seu App.js arquivo, importe o Entrar e Bater papo componentes para renderizá-los em seu navegador.

Na tua App.js arquivo, exclua o código clichê e adicione o código abaixo:

importar Bater papo de'./components/Chat';
importar Entrar de'./components/SignIn';
importar { aut } de'./firebase-config.js'
importar { useAuthState } de'react-firebase-hooks/auth'
funçãoAplicativo() {
const [usuário] = useAuthState (autenticação)
retornar (
<>
{do utilizador? <Bater papo />: <Entrar />}
</>
);
}
exportarpadrão Aplicativo;

Este código renderiza o Entrar e Bater papo componentes condicionalmente, verificando o status de autenticação de um usuário. O status de autenticação é desestruturado do componente de autenticação Firebase com a ajuda do useAuthState gancho do react-firebase-hooks pacote.

Ele verifica se um usuário está autenticado e processa o Bater papo componente caso contrário o Entrar componente é renderizado. Por fim, adicione qualquer estilo CSS, ative o servidor de desenvolvimento para salvar as alterações e acesse o navegador para ver os resultados finais.

Funcionalidades sem servidor do Firebase

O Firebase fornece uma variedade de recursos além de um banco de dados e autenticação em tempo real. Você pode usar suas funcionalidades sem servidor para inicializar e escalar rapidamente qualquer aplicativo. Além disso, o Firebase integra-se perfeitamente com aplicativos da Web e móveis, facilitando a criação de aplicativos multiplataforma.