Skip to content

Issuf0/My-First-Application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

My First Application

Meu primeiro repositório versionado Olá, Gemini. Quero que você crie um servidor de backend em Java para uma aplicação de chat.

Contexto: O frontend é um aplicativo móvel feito em React Native que usa a biblioteca socket.io-client para
comunicação. O frontend já está pronto e espera que o backend siga o protocolo Socket.IO. Um servidor WebSocket padrão (RFC 6455) não será compatível.

Requisitos do Servidor:

  1. Tecnologia:

    • Linguagem: Java
    • Framework/Biblioteca Principal: Use a biblioteca netty-socketio para criar um servidor compatível com Socket.IO.
    • Gerenciador de Dependências: Use Maven. Forneça o arquivo pom.xml completo.
    • Porta: O servidor deve rodar na porta 8081.
  2. Modelo de Dados: Crie uma classe Message (pode ser um record Java) com os seguintes campos:

    • id (String, gerado via UUID.randomUUID().toString())
    • sender (String)
    • text (String)
    • timestamp (long, gerado via System.currentTimeMillis())
  3. Lógica de Negócio:

    • Mantenha um histórico das mensagens em uma lista na memória (por exemplo, List).
    • O servidor deve ser configurado para permitir conexões de qualquer origem (CORS *) para facilitar o desenvolvimento.
  4. Eventos Socket.IO: O servidor deve manipular os seguintes eventos:

    • Ao Conectar (connect):

      • Um cliente se conecta passando um username como parâmetro na query de conexão (ex: http://localhost:8081?username=NOME). Extraia esse nome de usuário.
      • Imprima no console que um usuário se conectou (ex: Usuário 'NOME' conectado.).
      • Envie para apenas esse cliente o histórico de mensagens usando o evento previousMessages. O payload deve ser a lista de mensagens em memória.
    • Ao Receber Mensagem (sendMessage):

      • O servidor deve escutar o evento sendMessage.
      • O payload recebido será um objeto com sender e text. Crie uma classe para representar esse objeto de entrada.
      • Crie um novo objeto Message completo, com um novo id e timestamp.
      • Adicione esta nova mensagem à lista de histórico em memória.
      • Envie esta nova mensagem para todos os clientes conectados (broadcast) usando o evento receiveMessage.
    • Ao Desconectar (disconnect):

      • Imprima no console que o usuário desconectou.

Estrutura do Projeto: Por favor, forneça o código completo para os seguintes arquivos, dentro de uma estrutura de projeto Maven
padrão:

  1. pom.xml
  2. src/main/java/com/example/chat/ChatServer.java (a classe principal que configura e inicia o servidor)
  3. src/main/java/com/example/chat/model/Message.java (o modelo de dados da mensagem)
  4. src/main/java/com/example/chat/model/MessageIn.java (o modelo de dados para a mensagem recebida)

About

Meu primeiro repositório versionado

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published