private void OnAccept(IAsyncResult result)
        {
            try
            {
                var receivedSocket = _serverSocket.EndAccept(result);
                Console.WriteLine("Subscriber connected");
                PerformHandshake(receivedSocket);

                var newSubscriber = new Subscriber(receivedSocket);
                var id            = Broker.AddSubscriberToMap(newSubscriber);
                newSubscriber.SendMessage(id.ToString());
            }
            catch (SocketException exp)
            {
                Console.WriteLine($"[ERR] {exp.Message}");
            }
            catch (IndexOutOfRangeException exp)
            {
                Console.WriteLine($"[ERR] {exp.Message}");
            }
            finally
            {
                if (_serverSocket != null && _serverSocket.IsBound)
                {
                    _serverSocket.BeginAccept(null, 0, OnAccept, null);
                }
            }
        }