<div dir="ltr">Thanks guys,<div><br></div><div>I am going to stick with the event loop as shown in the test-server.c sample program for now.  I will create my own list of wsi and user_data pointers.  I will leave it single-threaded for the moment.  I will let you know if I get stuck.</div><div><br></div><div>Thanks again,</div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, 31 Jan 2016 at 04:34 Bruce Perens <<a href="mailto:andy.green@linaro.org">andy.green@linaro.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I think the key is that you need to write your own event loop, rather than provide the one that Andy packages for us. Then, you have all of the data that you need.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 30, 2016 at 4:42 AM, Andy Green <span dir="ltr"><<a href="mailto:andy@warmcat.com" target="_blank">andy@warmcat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><br>
<br>
On 01/30/2016 08:21 PM, Tortoise Mailbox wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello,<br>
<br>
My websockets server will have a number of clients connected to it<br>
simultaneously.  Each client will be interested in different<br>
information.  The server will send data to the clients under 2<br>
conditions: periodic updates, or on detection changed data.  Different<br>
clients will request updates at different intervals e.g., a phone with<br>
limited bandwidth might request updates every 10 seconds, but a desktop<br>
browser might request updates every 1 second.  How do I initiate writing<br>
to select clients using libwebsockets?  I may be mistaken, but the<br>
</blockquote>
<br></span>
LWS_VISIBLE LWS_EXTERN int<br>
lws_callback_on_writable(struct lws *wsi);<span><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
sample programs only show sending of data in response to receiving data,<br>
or sending data periodically to all clients (not specific clients).<br>
Also, is it possible to access the per-session data outside of the callback?<br>
</blockquote>
<br></span>
These are all the same issue actually, you want to hold your own list of wsi + user pointer (which you can acquire at ESTABLISHED callback and retire at the corresponding CLOSE callback).<br>
<br>
If you look at the locking in the test-server-pthreads example, you can use this to guarantee a wsi will not disappear from under you in a different thread.  And it's safe to call lws_callback_on_writable() otherwise from the other thread.<br>
<br>
-Andy<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thank you.<br>
<br>
<br>
_______________________________________________<br>
Libwebsockets mailing list<br>
<a href="mailto:Libwebsockets@ml.libwebsockets.org" target="_blank">Libwebsockets@ml.libwebsockets.org</a><br>
<a href="http://ml.libwebsockets.org/mailman/listinfo/libwebsockets" rel="noreferrer" target="_blank">http://ml.libwebsockets.org/mailman/listinfo/libwebsockets</a><br>
<br>
</blockquote>
_______________________________________________<br>
Libwebsockets mailing list<br>
<a href="mailto:Libwebsockets@ml.libwebsockets.org" target="_blank">Libwebsockets@ml.libwebsockets.org</a><br>
<a href="http://ml.libwebsockets.org/mailman/listinfo/libwebsockets" rel="noreferrer" target="_blank">http://ml.libwebsockets.org/mailman/listinfo/libwebsockets</a><br>
</blockquote></div><br></div>
_______________________________________________<br>
Libwebsockets mailing list<br>
<a href="mailto:Libwebsockets@ml.libwebsockets.org" target="_blank">Libwebsockets@ml.libwebsockets.org</a><br>
<a href="http://ml.libwebsockets.org/mailman/listinfo/libwebsockets" rel="noreferrer" target="_blank">http://ml.libwebsockets.org/mailman/listinfo/libwebsockets</a><br>
</blockquote></div>