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.