Um sistema de comunicação com protocolo TCP

Desafio avançado 🐓
Nesse desafio você deve criar um sistema de comunicação entre cliente e servidor usando Go, incluindo tanto o servidor quanto o cliente. Você pode usar qualquer lib externa se necessário. O protocolo deve ser baseado em TCP puro, não use protocolos de aplicação existentes como HTTP ou WebSockets.

Requisitos

  •   Criar um servidor TCP que escuta numa porta que é especificada por uma variável de ambiente PORT
  •   Criar um cliente TCP que se conecta a um servidor
  •   Quando um cliente se conecta ao servidor, um id único é gerado e enviado de volta ao cliente
  •   O cliente pode enviar mensagens com três dados:
  •         id - o id do cliente (obrigatório)
  •         action - uma ação esperada pelo servidor (obrigatório)
  •         body - qualquer dado (json, texto puro, tanto faz) que um cliente deseja envivar para o servidor (opcional)
  •   Quando o cliente envia uma mensagem com action LIST o servidor deve retornar uma lista de todos os ids de clientes conectados
  •   Quando o cliente envia uma mensagem com action RELAY o servidor deve enviar a mensagem do campo body para todos os clientes conectados

Sugestão de estudo

  •   Golang
  •   network

Inspirado em desafios de empresas como

Desafios Relacionados

Esse desafio ainda não tem solução mas recomendamos o desafio Clone do Kafka que aborda os mesmos conhecimentos.