示例#1
0
        private byte[] GenerateC2SRequest()
        {
            string host = _uri.DnsSafeHost;

            string path = _uri.AbsolutePath;

            if (!string.IsNullOrEmpty(_uri.Query))
            {
                path += "?" + _uri.Query;
            }
            var origin = "http://" + host;

            if ("".Equals(path))
            {
                path = "/";
            }

            string handShake =
                "GET " + path + " HTTP/1.1 \r\n"
                + "Host: " + host + "\r\n"
                + "Upgrade: WebSocket\r\n"
                + "Connection: Upgrade\r\n"
                + "Sec-WebSocket-Key: " + _hybiKey + "\r\n"
                + "Origin: " + origin + "\r\n"
                + "Sec-WebSocket-Protocol: " + _protocol + "\r\n"
                + "Sec-WebSocket-Version: " + _version + "\r\n\r\n";

            return(WebSocketConvert.StringToBytes(handShake, WebSocketTypeEncoding.UTF8));;
        }
示例#2
0
        public void PackFragments()
        {
            StringBuilder lSB = new StringBuilder();

            for (int i = 0; i < mFragments.Length; i++)
            {
                lSB.Append(mFragments[i]);
                mFragments[i] = null;
            }
            mByteArray = WebSocketConvert.StringToBytes(lSB.ToString(), WebSocketTypeEncoding.UTF8);
        }
示例#3
0
        private static string CalcHybiSecKeyAccept(string aKey)
        {
            aKey = aKey + WebSocketMessage.KEY;
            string lAccept = null;
            SHA1   lSHA1   = new SHA1CryptoServiceProvider();

            byte[] lBufSource = WebSocketConvert.StringToBytes(aKey, WebSocketTypeEncoding.Default);
            try
            {
                byte[] lBufTarget = lSHA1.ComputeHash(lBufSource);
                lAccept = Convert.ToBase64String(lBufTarget);
            }
            catch (Exception lEx)
            {
                throw new WebSocketException(WebSocketMessage.ERROR_CONVERTING_BASE64 + lEx.Message);
            }
            return(lAccept);
        }
示例#4
0
        private string CalcHybiSecKeyAccept()
        {
            var    key = _hybiKey + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
            string acceptedResponseKey = null;
            var    sha1 = new SHA1Managed();

            byte[] keyByteArray = WebSocketConvert.StringToBytes(key, WebSocketTypeEncoding.UTF8);
            try
            {
                byte[] hashedKeyByteArray = sha1.ComputeHash(keyByteArray);
                acceptedResponseKey = Convert.ToBase64String(hashedKeyByteArray);
            }
            catch (Exception)
            {
                //TODO - handle exception
            }
            return(acceptedResponseKey);
        }
示例#5
0
        /// <summary>
        /// Generates the initial Handshake from a Client to the WebSocket.
        /// </summary>
        /// <returns>Handshake as byte array.</returns>
        public byte[] GenerateC2SRequest()
        {
            if (mLog.IsDebugEnabled)
            {
                mLog.Debug(WebSocketMessage.GENERATING_C2S_REQUEST);
            }

            string lHost = mUri.DnsSafeHost;
            string lPath = mUri.PathAndQuery;

            mOrigin = WebSocketMessage.HTTP + lHost;

            if (string.Empty.Equals(lPath))
            {
                lPath = WebSocketMessage.SLASH;
            }

            string lHandshake =
                WebSocketMessage.GET + lPath + WebSocketMessage.HTTP11
                + WebSocketMessage.HOST + WebSocketMessage.TWO_POINT + lHost + WebSocketMessage.NL_RETURN
                + WebSocketMessage.UPGRADE_WEBSOCEKT + WebSocketMessage.NL_RETURN
                + WebSocketMessage.CONNECTION_UPGRADE + WebSocketMessage.NL_RETURN
                + WebSocketMessage.SEC_WEBSOCKET_KEY + WebSocketMessage.TWO_POINT
                + mHybiKey + WebSocketMessage.NL_RETURN
                + WebSocketMessage.ORIGIN + WebSocketMessage.TWO_POINT + mOrigin + WebSocketMessage.NL_RETURN
                + WebSocketMessage.SEC_WEBSOCKET_PROTOCOL + WebSocketMessage.TWO_POINT + mProtocol
                + WebSocketMessage.NL_RETURN
                + WebSocketMessage.SEC_WEBSOCKET_VERSION + WebSocketMessage.TWO_POINT + mVersion;

            if (mCookieManage.Count() > 0)
            {
                lHandshake += WebSocketMessage.NL_RETURN + mCookieManage.ProcessCookies(mCookieManage.GetCookies(mUri));
            }

            lHandshake += WebSocketMessage.NL_RETURN + WebSocketMessage.NL_RETURN;
            return(WebSocketConvert.StringToBytes(lHandshake, WebSocketTypeEncoding.ASCII));
        }
示例#6
0
 public byte[] TokenToByte(Token aToken)
 {
     return(WebSocketConvert.StringToBytes(TokenToText(aToken), WebSocketTypeEncoding.UTF8));
 }
示例#7
0
 public void SetASCII(string aString)
 {
     mByteArray = WebSocketConvert.StringToBytes(aString, WebSocketTypeEncoding.ASCII);
 }
示例#8
0
 public void SetUTF8(string aString)
 {
     mByteArray = WebSocketConvert.StringToBytes(aString, WebSocketTypeEncoding.UTF8);
 }
示例#9
0
 public void SetString(string aString, WebSocketTypeEncoding aEncoding)
 {
     mByteArray = WebSocketConvert.StringToBytes(aString, aEncoding);
 }