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

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


Unfortunately, that call doesn't seem to exist in the version I'm 
using.  What version is the latest stable version?

Thanks!
-m

On 06/20/2014 08:29 AM, Bas Appelo wrote:
> thread-1:
>     libwebsocket_service(context, LARGE_NUMBER); //blocks
>
> thread-2:
>     libwebsocket_cancel_service(context); // wakes up thread-1
>
> thread-1:
>     libwebsocket_callback_on_writable(context, wsi);
>     libwebsocket_service(context, LARGE_NUMBER); //blocks <= will call 
> the callback!
>
> Now you will receive a callback, it works like a charm.
> So to write data you'll need to be in a callback, but the way above 
> shows you how to get there/enforce one.
>
>
> On 06/20/2014 02:18 PM, Mike M wrote:
>> >>/  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
>>
>>
>>
>> _______________________________________________
>> Libwebsockets mailing list
>> Libwebsockets at ml.libwebsockets.org
>> http://ml.libwebsockets.org/mailman/listinfo/libwebsockets
>
>
>
> _______________________________________________
> Libwebsockets mailing list
> Libwebsockets at ml.libwebsockets.org
> http://ml.libwebsockets.org/mailman/listinfo/libwebsockets

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://libwebsockets.org/pipermail/libwebsockets/attachments/20140620/eb27093c/attachment-0001.html>


More information about the Libwebsockets mailing list