[Klone-users] Klone using server push

Andre Puschmann ap4lists at sp-ss.de
Wed Jul 16 17:10:17 EDT 2008


Hi Stefano,

thanks for your quick reply.
It worked as you described, thank you very much. However, I now got
another problem/question.

I've read that klone runs multiple processes to serve client connections
(prefork pattern).

Is it possible to have shared resources for all processes?

Lets say I want to have just _one_ socket descriptor (singleton) that
I want to use.
I tried to use the iterative model to do so. But if that single
descriptor does a blocking read, the server hangs. So this is no
solution. Would you recommend using pthread for this?

I am not sure if I get something wrong :-)

Regards,
Andre






Stefano Barbato wrote:
> Hi Andre,
> 
> KLone buffers the first 4096 bytes to give users the opportunity to
> modify header fields even after a few bytes have been written out with
> io_printf or io_write. You can for example use the response_redirect
> even after io_prints:
> 
> <%
>     io_printf(out, "result 1");
>     io_printf(out, "result 2");
>     io_printf(out, "result 3");
>     
>     /* then if an error occurred you can still modify http header */
>         if(error_condition)
>         response_redirect(response, "/error.kl1");
> %>
> 
> The buffer is implemented as a filter attached to the response_t I/O
> object so you can avoid such buffer removing such filter and explicitly
> call the response_print_header() function (if you want an HTTP header at
> least). Here's the code:
> 
> 
> <%
>     ...
>     response_set_field(response, "Expires:","Mon, 26 Jul 1997 05:00:00
> GMT");
> 
>     io_codecs_remove(response_io(rs));
>     response_print_header(response);
> 
>     io_printf(out, "---ThisRandomString---\n");
>     ...
> %>
> 
> Take a look to the "Message Channel" KLone demo application that opens
> and keep opened a bidirectional channel between client and server:
> 
> http://koanlogic.com/download/klapp-msgchan-1.2.2.tar.gz
> 
> It's built on Flash XmlSocket component and a custom easy library we
> wrote (see msgchan.h).
> 
> bye!
> 
> s
> 
> 
> 
> 
> On 08/lug/08, at 19:32, Andre Puschmann wrote:
> 
>> Hi all,
>>
>> I am trying to use a server push technique to avoid client side polling
>> for data.
>> I am not sure if I am doing something wrong. For some reason Klone sends
>> all 4 "packets" in one single bunch. Well, at least wireshark reports
>> this!
>> Seems like io_flush doesn't work?!
>>
>> Here is my sample code:
>>
>> <code>
>> <%!
>>   #include <stdio.h>
>> %><%
>>   int i;
>>
>>   response_set_content_type(response,
>> "multipart/x-mixed-replace;boundary=---ThisRandomString---");
>>   response_set_field(response, "Pragma:", "no-cache");
>>   response_set_field(response, "Cache-Control", "no-cache, no-store,
>> must-revalidate");
>>   response_set_field(response, "Expires:", "Mon, 26 Jul 1997 05:00:00
>> GMT");
>>
>>
>>   io_printf(out, "---ThisRandomString---\n");
>>
>>   for (i = 1; i < 5; i++)
>>   {
>>      io_printf(out, "Content-type: text/html\n\n");
>>      io_printf(out, "<h2>part %d</h2>\n", i);
>>      io_printf(out, "---ThisRandomString---\n");
>>      io_flush(out);
>>      sleep(1);
>>   }
>> %>
>> </code>
>>
>> Using the built-in cgi works for a shell script. Also here's the code
>> for that one:
>>
>> <code>
>> #!/bin/sh
>> echo "HTTP/1.0 200"
>> echo "Content-type:
>> multipart/x-mixed-replace;boundary=---ThisRandomString---"
>> echo ""
>> echo "---ThisRandomString---"
>> while true
>> do
>> echo "Content-type: text/html"
>> echo ""
>> echo "time: "
>> date
>> echo "---ThisRandomString---"
>> sleep 5
>> done
>> </code>
>>
>>
>> Comments are welcome!
>>
>> Best regards,
>> Andre
>>
>> _______________________________________________
>> Klone-users mailing list
>> Klone-users at koanlogic.com
>> http://koanlogic.com/cgi-bin/mailman/listinfo/klone-users
>>
> 
> 
> _______________________________________________
> Klone-users mailing list
> Klone-users at koanlogic.com
> http://koanlogic.com/cgi-bin/mailman/listinfo/klone-users
> 
> 





More information about the klone-users mailing list