protected override IReceiveFilter <StringPackageInfo> GetBodyReceiveFilter(HttpHeaderInfo header, int headerSize)
        {
            var session          = AppContext.CurrentSession;
            var websocketContext = new WebSocketContext(session, header);

            var secWebSocketVersion = header.Get(WebSocketConstant.SecWebSocketVersion);

            IReceiveFilter <StringPackageInfo> handshakeReceiveFilter = null;

            if (secWebSocketVersion == RFC6455_VERSION)
            {
                handshakeReceiveFilter = new Rfc6455ReceiveFilter();
            }
            else if (secWebSocketVersion == HYBI10_VERSION)
            {
                handshakeReceiveFilter = new DraftHybi10ReceiveFilter();
            }
            else
            {
                handshakeReceiveFilter = new DraftHybi00ReceiveFilter();
            }

            var handshakeHandler = handshakeReceiveFilter as IHandshakeHandler;

            if (handshakeHandler != null)
            {
                handshakeHandler.Handshake(session, header);
            }

            return(handshakeReceiveFilter);
        }
Exemple #2
0
        protected override IReceiveFilter <HttpPackageInfo> GetBodyReceiveFilter(HttpHeaderInfo header, int headerSize)
        {
            var contentLength = 0;

            if (int.TryParse(header.Get(HttpHeaderKey.ContentLength), out contentLength) && contentLength > 0)
            {
                return(new HttpBodyReceiveFilter(header, headerSize, contentLength));
            }

            if (contentLength > 0)
            {
                return(new HttpBodyReceiveFilter(header, headerSize, contentLength));
            }

            return(null);
        }
Exemple #3
0
        protected override IReceiveFilter <HttpPackageInfo> GetBodyReceiveFilter(HttpHeaderInfo header, int headerSize)
        {
            var contentLength    = 0;
            var strContentLength = header.Get("Content-Length");

            if (string.IsNullOrEmpty(strContentLength))
            {
                contentLength = -1;
            }
            else
            {
                contentLength = int.Parse(strContentLength);
            }

            if (contentLength > 0)
            {
                var totalLength = headerSize + contentLength;
                return(new HttpBodyReceiveFilter(header, totalLength, headerSize));
            }

            return(new HttpChunkReceiveFilter(header, new StringBuilder()));
        }