On Fri, Mar 9, 2012 at 4:37 AM, marten.ekb...@relevo.se <marten.ekb...@relevo.se> wrote: > I have created a client app that communicates with a web service that uses > the Comet way of sending events to a client. To do that I start a > “long-living” HttpWebRequest to the server. The server communicates back to > the client by sending chunked content (Transfer-Encoding: chunked). > Individual events are then transferred in chunks. The problem for me here is > that Mono seems to wait for the connection to terminate or the timeout to > happen before sending the chunks back to the consumer of HttpWebRequest. > This is not the case in .Net. In .Net each chunk is reported back > individually when they arrive. > This is the pseudo code I’m using: > 1. HttpWebRequest req = WebRequest.Create( URL…); > 2. req.BeginGetRequestStream(…); > 3. stream = eventContext.WebRequest.EndGetRequestStream(…); > 4. StreamWriter writer = new StreamWriter(stream); > 5. writer.Write(data); > 6. writer.Close(); > 7. eventContext.RequestStream.Close(); > 8. eventContext.WebRequest.BeginGetResponse(…); > 9. HttpWebResponse resp = (HttpWebResponse) > req.EndGetResponse(asynchronousResult); > 10. responseStream = resp.GetResponseStream(); > 11. responseStream.BeginRead(eventContext.Buffer, 0, 20000, new > AsyncCallback(DataReceived), eventContext); > 12. In DataReceived I do responseStream.EndRead(asynchronousResult); > 13. After that I arm the read again with responseStream.BeginRead(…); > > > In .Net DataReceived is called on each packet. In Mono it’s called after 30 > seconds (probably the timeout). > > Is this the intended behavior with HttpWebRequest and chunked content? Is > there another recommended way of dealing Comet style web services?
For the record, this was a bug that is now fixed in the mono-2-10 and master branches. -Gonzalo _______________________________________________ Mono-list maillist - Mono-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-list