예제 #1
0
    public static bool Upgrade(HTTPRequestPacket request, HTTPResponsePacket response)
    {
        if (IsWebsocketRequest(request))
        {
            string magicString = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
            string ret         = request.Headers["Sec-WebSocket-Key"] + magicString;
            // Compute the SHA1 hash
            SHA1   sha      = SHA1.Create();
            byte[] sha1Hash = sha.ComputeHash(Encoding.UTF8.GetBytes(ret));
            response.Headers["Upgrade"]              = request.Headers["Upgrade"];
            response.Headers["Connection"]           = request.Headers["Connection"];// "Upgrade";
            response.Headers["Sec-WebSocket-Accept"] = Convert.ToBase64String(sha1Hash);

            if (request.Headers.ContainsKey("Sec-WebSocket-Protocol"))
            {
                response.Headers["Sec-WebSocket-Protocol"] = request.Headers["Sec-WebSocket-Protocol"];
            }


            response.Number = HTTPResponsePacket.ResponseCode.Switching;
            response.Text   = "Switching Protocols";

            return(true);
        }

        return(false);
    }
예제 #2
0
        /*
         * public enum SendOptions : int
         * {
         *  AllCalculateLength,
         *  AllDontCalculateLength,
         *  SpecifiedHeadersOnly,
         *  DataOnly
         * }
         */

        public HTTPConnection()
        {
            Response  = new HTTPResponsePacket();
            variables = new KeyList <string, object>();
        }