public void Disconnect()
        {
            iMessagingServiceCallback client = OperationContext.Current.GetCallbackChannel <iMessagingServiceCallback>();
            int hash = client.GetHashCode();

            if (clients.TryRemove(hash, out client))
            {
                Console.WriteLine("client {0} disconnected at {1}, total clients: {2}", hash, DateTime.Now.ToString(), clients.Count);
            }
        }
        public void PublishMessage(string msg)
        {
            iMessagingServiceCallback sender = OperationContext.Current.GetCallbackChannel <iMessagingServiceCallback>();

            Task.Factory.StartNew(() =>
            {
                string theTime = DateTime.Now.ToString();
                Console.WriteLine("Received from {0} at {1}: {2}", sender.GetHashCode().ToString(), theTime, msg);
                string theMsg          = string.Format("{0} | {1}", theTime, msg);
                BroadcastMessage bcast = new BroadcastMessage(sender, theMsg);

                msgQueue.Add(bcast);
            });
        }
 private void killClient(iMessagingServiceCallback client)
 {
     try
     {
         int hash = client.GetHashCode();
         if (clients.TryRemove(hash, out client))
         {
             Console.WriteLine("killed client {0} at {1}", hash, DateTime.Now.ToString());
         }
     }
     catch (Exception e)
     {
         Console.WriteLine("Exception killing client {0}: {1}", client.GetHashCode().ToString(), e.Message);
     }
 }
 public BroadcastMessage(iMessagingServiceCallback sender, string msg)
 {
     this.sender = sender;
     this.msg    = msg;
 }