public static bool CheckHandshake(Context context)
        {
            if(context.ReceivedByteCount > 8)
            {
                var AHandshake = new ClientHandshake(context.Header);

                // See if our header had the required information
                if (AHandshake.IsValid())
                {
                    // Optionally check Origin and Location if they're set.
                    if (Origin != string.Empty &&
                        AHandshake.Origin != "http://" + Origin)
                    {
                        return false;
                    }

                    if (Location != string.Empty &&
                        AHandshake.Host != string.Format("{0}:{1}", Location, context.Server.Port))
                    {
                        return false;
                    }

                    // Generate response handshake for the client
                    var serverShake = GenerateResponseHandshake(AHandshake);

                    // Send the response handshake
                    SendServerHandshake(serverShake, context);

                    return true;
                }
            }
            return false;
        }
        private static ServerHandshake GenerateResponseHandshake(ClientHandshake aHandshake)
        {
            var aResponseHandshake = new ServerHandshake
            {
                Location = string.Format("ws://{0}{1}", aHandshake.Host, aHandshake.ResourcePath),
                Origin = aHandshake.Origin,
                SubProtocol = aHandshake.SubProtocol,
                AnswerKey = GenerateAnswerKey(aHandshake.Key)
            };

            return aResponseHandshake;
        }