[Libwebsockets] How to send data asynchronously to the client?

Mike M lws14 at mordent.com
Fri Jun 20 14:18:39 CEST 2014


>>/  Hi,
/>>/
/>>/  1)Is there a way to asynchronously send the data to the client? That is,
/>>/  without being in a callback, server spontaneously initiating data
/>>/  transfer to the client..!!
/>
>Libwebsockets is basically single-threaded.  But, with care from another
>server thread, you can call either
>
>libwebsocket_callback_on_writable(), or
>libwebsocket_callback_on_writable_all_protocol()
>
>but you need to manage your own list of live wsi / connections with the
>first option (by tracking their creating and destruction in the
>ESTABLISHED and CLOSED callbacks).
>
>You will get a LWS_CALLBACK_SERVER_WRITABLE as soon as it's possible to
>write on that connection then, and you should figure out what to write
>and write it from there.
>
>-Andy


Hi,

I am doing exactly this, but it doesn't work.

I have a thread that calls libwebsocket_service with a huge timeout.  
Writes, etc, are only ever done from within the callback.  When I need 
to write something from another thread, I queue up the message that 
needs to be written and then immediately call 
libwebsocket_callback_on_writeable_all_protocol on the proto I'm writing 
for.

Unfortunately, I never get LWS_CALLBACK_SERVER_WRITEABLE until the 
libwebsocket_service times out and gets called again.  This is totally 
broken.  I saw a trac issue (#56) about using ppoll. Unfortunately, the 
version of the library we're using doesn't seem to have that code in 
it.  Any ideas?

Thanks,
-m

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://libwebsockets.org/pipermail/libwebsockets/attachments/20140620/0b85f668/attachment.html>


More information about the Libwebsockets mailing list