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); }
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); }
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())); }