The Elixir's sample code for Echo server doesn't exactly work for me. So i created my own EchoServer with some modification here and there. This supports multiple client request. Here's the sample code defmodule Processboy do require Logger @doc """ Starts accepting connections on the given `port`. Processboy.Supervisor.start(nil, nil) """ def accept (port) do {:ok, socket} = :gen_tcp.listen(port, [:binary, packet: :line, active: false , reuseaddr: true ]) Logger .info "Accepting connections on port #{port}" loop_acceptor(socket) end def init () do import Supervisor . Spec children = [ supervisor( Task . Supervisor , [[name: Processboy , restart: :transient]]) ] #opts = [strategy: :one_for_one, name: Processboy] {:ok, pid} = Supervisor .start_link(children, strategy: :one_for_one) end defp loop_acceptor (socket) do {:ok, client} = :gen_tcp.accept(socket) Logg