Do I store the socket as part of a GenServer state, or do I start it as a child of a supervisor and let the GenServer reference it by a name and vice versa, socket to GenServer?
Is there a way to listen (like handle_info) for new messages instead of blocking with receive/1?