Catch and Log unhandled exceptions
Catch SocketException when receiving messages - this can get thrown even if "socket.Available > 0" is true. Treat like timeout by disconnection and reconnecting the notication server