<p dir="ltr"><br>
On 20 Aug 2014 05:11, "Steve Calfee" <<a href="mailto:scalfee@mqidentity.com">scalfee@mqidentity.com</a>> wrote:<br>
><br>
><br>
> ________________________________<br>
> From: Andy Green <<a href="mailto:andy.green@linaro.org">andy.green@linaro.org</a>><br>
> Sent: Tuesday, August 19, 2014 12:43 PM<br>
> To: Steve Calfee;<a href="mailto:libwebsockets@ml.libwebsockets.org">libwebsockets@ml.libwebsockets.org</a><br>
> Subject: RE: [Libwebsockets] two part html<br>
>  <br>
><br>
><br>
> On 20 Aug 2014 02:08, "Steve Calfee" <<a href="mailto:scalfee@mqidentity.com">scalfee@mqidentity.com</a>> wrote:<br>
> ><br>
> > ________________________________________<br>
> > From: Andy Green <<a href="mailto:extracats@googlemail.com">extracats@googlemail.com</a>> on behalf of Andy Green <<a href="mailto:andy@warmcat.com">andy@warmcat.com</a>><br>
> > Sent: Monday, August 18, 2014 9:13 PM<br>
> > To: Steve Calfee;<a href="mailto:libwebsockets@ml.libwebsockets.org">libwebsockets@ml.libwebsockets.org</a><br>
> > Subject: Re: [Libwebsockets] two part html<br>
> ><br>
> > On 19 August 2014 10:53:37 GMT+08:00, Steve Calfee <<a href="mailto:scalfee@mqidentity.com">scalfee@mqidentity.com</a>> wrote:<br>
> > >Hi,<br>
> > ><br>
> > >I think I can do this, but I am not sure. I would like to send a html<br>
> > >file with the lws sendfile capability. Then I want to send a string of<br>
> > >json I built in my app as the rest of the html.<br>
> > ><br>
> > >I think all I have to do is when sendfile is done, return 0; then on<br>
> > >the next http callback I can send my data. If that is true, what<br>
> > >callback code will I get to indicate it is time for me to send my<br>
> > >little computed data?<br>
> ><br>
> > If I understood it, LWS_CALLBACK_HTTP_WRITEABLE.<br>
> ><br>
> > But you will get trouble I think, if sending the file sets the content length header the transaction is over after that much was sent.<br>
> ><br>
> > -Andy<br>
> ><br>
> > Hi Andy,<br>
> ><br>
> > Who sets the content-length field? I don't have the source here, but I will check it later. If it is set by the lws_sendfile routine, I guess I cannot do it that way.<br>
> ><br>
> > As a simpler example, say I split a html file arbitrarily in the middle, into 2 files. Then in the http callback I call the lws_sendfile routine twice. Would that work?<br>
> ><br>
> > Thanks, Steve<br>
> ><br>
> > Hi Andy,<br>
> ><br>
> > A follow up. I can now see the source and indeed libwebsockets_serve_http_file sets the content-length so I cannot use it to send two parts. I will have to roll my own.<br>
> ><br>
> > I don't understand the lws rules on private routines. Can I unroll the big  libwebsockets_serve_http_file by explicitly handling the start of the send?  And then use "LWS_VISIBLE int libwebsockets_serve_http_file_fragment(..." or is that a private function that should not be used by user level code?<br>

> ><br>
> > It isn't that big a deal to do it explicitly in my code, but I always like to reuse code from libraries if it is possible.<br>
><br>
> It's separated out like that to indicate we'll make an effort to maintain the public ones in a way that they still look pretty much the same if possible in later versions.<br>
><br>
> The private ones have no such promise they may change or disappear at any time.<br>
><br>
> And it's less confusing if people can read libwebsockets.h to understand what is available.<br>
><br>
> I think your approach might not be the right way.<br>
><br>
> How about put your payload in a cookie header or somesuch and just send the file simply?<br>
><br>
> Or if you don't send this stuff very often, pick it up in two separate http requests at different uri paths?<br>
><br>
> Either way your code gets simpler, more testable and more reliable.<br>
><br>
> -Andy<br>
><br>
><br>
> Hi Andy,<br>
><br>
><br>
> I agree intentionally private stuff should stay private.<br>
><br>
><br>
> I don't know how a user can load one web page using two separate http requests.</p>
<p dir="ltr">Look at the test app... he has a png on the fetched page... and javascript once it runs can modify the page html with separately fetched content.</p>
<p dir="ltr">> Also, I don't know how a cookie header could add json or javascript to a web page?</p>
<p dir="ltr">You can fetch the cookie info in the javascript and modify the page html or use it as a variable...</p>
<p dir="ltr">> The simplest way to think of it is I want a browser to get two separate html files in one http connection. I think the only way to do this is to read the files in the http callback and do two (or more) sends using something very like  libwebsockets_serve_http_file, but that does match my peculiar needs.</p>

<p dir="ltr">Maybe you should load a template html file into memory and modify it dynamically to send only one lump of html then.</p>
<p dir="ltr">Anyway good luck.</p>
<p dir="ltr">-Andy</p>
<p dir="ltr">><br>
> Steve<br>
</p>