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); }
/* * public enum SendOptions : int * { * AllCalculateLength, * AllDontCalculateLength, * SpecifiedHeadersOnly, * DataOnly * } */ public HTTPConnection() { Response = new HTTPResponsePacket(); variables = new KeyList <string, object>(); }