[Mono-list] HttpWebRequest differently compared to HttpWebRequest on .Net.

Gonzalo Paniagua Javier gonzalo.mono at gmail.com
Tue Mar 13 16:08:33 UTC 2012


On Fri, Mar 9, 2012 at 4:37 AM, marten.ekblad at relevo.se
<marten.ekblad at 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


More information about the Mono-list mailing list