Construa um chat TCP simples para comunicação em tempo real entre participantes. Ideal para prática de programação concorrente e distribuída com Elixir.
- Elixir e OTP para o servidor TCP.
- Mix para gerenciamento do projeto.
- Servidor TCP: Implementar um servidor TCP com
:gen_tcp
que suporte múltiplas conexões de clientes. - Identificação de Usuário: Os usuários devem ser capazes de se identificar com um apelido.
- Mensagens Globais: Mensagens enviadas por um usuário devem ser recebidas por todos os usuários conectados.
- Comandos: Implementar comandos para:
- Listar usuários conectados.
- Sair do chat.
- Supervisão: Usar um Supervisor para gerenciar processos do servidor e assegurar resiliência.
/nick <apelido>
: Define ou altera o apelido do usuário./list
: Lista todos os usuários conectados./quit
: Desconecta o usuário do chat.- Mensagens sem prefixo são consideradas mensagens globais e enviadas a todos os usuários.
- Clone o repositório e navegue até o diretório do projeto.
- Execute
mix deps.get
para instalar as dependências. - Inicie o servidor com
mix run --no-halt
.
- Conecte-se ao servidor utilizando um cliente TCP (ex.:
telnet
ounc
). - Uma vez conectado, utilize os comandos disponíveis para interagir no chat.
- Revise a documentação do :gen_tcp para entender o funcionamento de servidores TCP em Erlang/Elixir.
- Explore o Guia de início rápido de GenServer para implementar a lógica de servidor.
- Para supervisão de processos, consulte Supervisor e Aplicação.
- Elixir School: Concorrência - Uma introdução à concorrência em Elixir.
- Testes: Inclua testes que verifiquem a funcionalidade básica do servidor, como a capacidade de conectar múltiplos clientes e a troca correta de mensagens.
- Documentação: Documente as funções públicas do seu servidor, especialmente aquelas que lidam com os comandos do usuário.